ugrás a tartalomhoz

jQuery-vel kiírt DOM elem kattintás probléma

kingbid · 2013. Már. 19. (K), 10.13
Sziasztok!

Van valami ésszerű megoldás az alábbi problémára?

Van egy táblázatom, melyet jQuery ajax segítségével töltök fel egy adatbázisból. Mikor valami esemény történik, például törlés, vagy módosítás, esetleg rendezés, vagy lapozás újra iratom a táblázatot, sőt még a lapozót is, mert törlés, vagy hozzáadás esetén változhat a lap szám, stb...

A gond ott kezdődik nálam, hogy az újra írt gombokat már nem tudom kattintani, pontosabban a jQuery selectorok nem működnek már. Ugyan ez a bajom volt például egy content divben elhelyezett pushState - onpopstate link esetében, mikor a link segítségével betöltöttem a megfelelő tartalmat oldal újratöltés nélkül a következőleg betöltött link már nem reagált úgy, mint a kiinduló link eseménye.

Elvileg a find() függvény erre lenne kitalálva, de nem egészen értem, hogy ezt hogyan tudnám alkalmazni, ehelyett:
$('.btn-pagination').click(function(event){
//ajax hívás és kiírás a megfelelő divbe
});

Mert így működik elsőre, de amint újra van töltve a div, már nem látja. Ezt a find függvényt hova kellene elhelyezni a kódban, hogy jó is legyen?

Előre is köszönöm a segítséget!
 
1

Események

Poetro · 2013. Már. 19. (K), 10.23
Az eseményeket a fenti kódban a már létező elemekre rakod rá. Viszont ha új elemeket raksz ki, azokra is fel kell tenni az eseménykezelőt. Ennél sokkal jobb megoldás, ha nem magukra az elemekre rakod az eseménykezelőt, hanem egy olyan szülőre, amit nem változtatsz, és ekkor figyeled, hogy melyik elemre történt meg az esemény, és ez alapján döntesz, hogy ekkor milyen eseménykezelő függvénynek kell lefutni.
Erre a jQuery újabb verziói az on függvényt kínálja, amellyel mondjuk a táblára rakod az eseménykezelőt, viszont csak akkor fog lefutni, ha a megfelelő gyerekére kattintottak:
jQuery("#dataTable").on("click", "tr", callbackFunction);
3

Köszönöm!

kingbid · 2013. Már. 19. (K), 10.30
Köszönöm a gyors választ! Az ötleted hatékonynak tűnik, Nagyon szépen köszönöm a segítséget srácok!
2

Az AJAX-szal való betöltés

Hidvégi Gábor · 2013. Már. 19. (K), 10.25
Az AJAX-szal való betöltés után újra kell futtatni a selectorokat és az események hozzárendelését, hogy a frissített DOM fában lévő elemeket lásd és használni tudd.