Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript]Jak zmusić skrypt do działania po dodaniu elementu?
Forum PHP.pl > Forum > Przedszkole
phpamator
Hej,
Panowie i Panie (jużmi kiedyś jedna powiedziała "dlaczego zawsze tylko 'Panowie. ...' a gdzie "One" ... wink.gif")

Buduję sobie tabelkę w której Jquery dodaje wiersze na żądanie.
Ale po dodaniu nie działają funkcje przypisane do poszczególnych elementów.
Co powinienem zrobić aby skrypty "widziały" te dodane elementy ?
Ogólnie rzecz biorąc ponieważ w wielu przypadkach generuję "gotowe" elementy i wrzucam do treści strony ten problem jest trochę irytujący.
Rozwiązuję to ładując kolejne kopie tego samego skryptu wraz z elementami wklejanymi do zawartości ale to chyba głupi pomysł prawda ?
Jak więc zmusić skrypt aby po każdorazowym dodaniu elementu chciał z nim działać ?


Pozdrawiam
phpamator
nospor
Skoro uzywasz jQuery to zainteresuj sie funkcja .on() ktora to pilnuje by raz przypisane zdarzenia podczepialy sie tez do nowych elementow
poli25
funkcja .live()
  1. http://api.jquery.com/live/

viking
Cytat(poli25 @ 11.01.2017, 13:49:58 ) *
funkcja .live()
  1. http://api.jquery.com/live/


Chyba żartujesz. Już dawno usunięta.
Poczytaj: https://prophp.pl/article/15/jquery%2C_zdar...e_metoda_%24.on
Puszy
Cytat(poli25 @ 11.01.2017, 13:49:58 ) *
funkcja .live()
  1. http://api.jquery.com/live/


Live jest przestarzałe. Tak jak napisał Nospor: .on() http://api.jquery.com/on/
phpamator
Coś jakby zaczyna mi świtać chociaż nie do końca, pewnie jutro załapię.

Czyli jeśli wklejam do istniejącego DOM'u element z zewnątrz powinien on być "widziany" i działać ?

na przykład:
Kod
$('#add').on(click,function () {
$("#additem").append("<td class='c n'>▲ ▼</td><td><input type='checkbox' value=''/></td><td><input class='addprod prod r' value=''/></td><td><input class='add prodname l' id='product' value=''/></td><td><input class='add variation' name='wariant' value='".$select_variation."'/></td><td><input class='qty r'/></td><td><input class='spev r'/></td><td><input class='vat r'/></td><td><input class='sp r'/></td><td><input class='tot r d'/></td>\");
});

append'uje nowy rząd do tabeli
i dotąd wszystko ok, dalej niestety nic się nie dzieje.
Do input class="addprod" podczepiona jest funkcja change() i ajax .....
viking
A przeczytałeś mój artykuł? Sądzę że jest bardzo dokładnie opisana delegacja, bubling i ogólnie on. I nie click - bo to nie zmienna, tylko 'click'.
phpamator
Cytat(viking @ 11.01.2017, 14:19:01 ) *
A przeczytałeś mój artykuł? Sądzę że jest bardzo dokładnie opisana delegacja, bubling i ogólnie on. I nie click - bo to nie zmienna, tylko 'click'.


Jestem w trakcie wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.