Olyan események kezelése, amelyek az ajaxon, az ajaxon keresztül töltődnek

A HTML kód nagyon egyszerű. Két bekezdésünk van, egy gomb, amellyel egy ajax-kérelmet és egy span elemet küldünk, amelyet szöveges üzenetek beillesztésére használunk.







Az induláshoz a kattintási eseményt a p elemekkel társítjuk. Eseménnyel kimenetet küldünk, hogy figyelmeztessük az ebben a bekezdésben szereplő szöveget.

Az Ajax-kérés végrehajtásra kerül, ha rákattint a gombelemre. Semmi bonyolult itt - a kérelmet fog küldeni eventHandlingAjax.php fájlt, és szállítás előtt, akkor beszúrni a sejtbe span, így segítségével láthatók a CSS (kezdetben ez az elem volt rejtve segítségével ugyanazt a CSS). Amikor megkapjuk a szerver válaszát, ugyanarra a span elemre írunk egy üzenetet, és ami a legfontosabb, adjunk hozzá a szervezethez, amit válaszként kaptunk.

És pontosan mi van a kiszolgálóoldali kóddal.

Hozzáadjuk a testben egy további bekezdés HTML kódját.

Ha már tapasztaltál ezt a példát, akkor valószínűleg észrevette, hogy a kattintások eseménykezelője csak azoknak a két bekezdésnek működik, amelyek az oldal elején voltak. És további bekezdések esetén ez a kezelő nem működik. Miért? Értsük meg.

Mi történik ezután? Ezután küldünk egy ajax-kérést a kiszolgálónak, és válaszként kapunk még egy p elemet, amelyet beillesztünk a DOM-ba. Ez a legfontosabb szempont - kattints eseménykezelő valójában nem kapcsolódik semmilyen p elemek az oldalon, és a célunk a jQuery, amely jelenleg csak két elem p, amelyek jelen voltak az oldalon eredetileg. A jQuery objektumhoz hozzáadott bekezdést nem lehetett beilleszteni, mivel még nem létezett, így a kattintási eseménykezelő nem működne.







Nos, most megtanuljuk: "Hogyan tudom megjavítani ezt?"

Nem szándékosan töröltem az első kattintás eseménykezelőjét, mert ebben a példában jól látom a különbséget a p elemeket tartalmazó két jQuery objektum között. Az elsőt alakult idején letöltés html-oldalak és két elemet tartalmaznak p, de a második jQuery objektum létrehozásakor elvégzése után ajax-kérelmet, és minden olyan elemet tartalmaz p, amely megtalálható a DOM, azaz egy kérés után három bekezdés, két-négy és így tovább. Vizuálisan, két tárgyat jQuery támasztja alá az a tény, hogy ha rákattint bármelyik „Add szakaszok” akkor csak egy üzenet alert'e, de ha rákattint az első vagy a második bekezdés látni fogja két alert'a - az első és a a második jQuery objektum. A jQuery objektumok száma növekedni fog az elindított ajax kérelmek számával együtt.

A másik irányba megy, és regisztrálja az eseménykezelőt közvetlenül a kiszolgáló szkriptfájljában - ebben az esetben azt is betöltődik és megfelelően működik. Nincs alapvető különbség e megközelítések között.

De valójában nem ez a helyes út. bár bizonyos esetekben ez a megoldás is nyerhető.

Szeretnék beszélni egy másik lehetséges megoldásról a probléma megoldására, vagyis a jQuery Listen plugin használatára. A kódban minden bizonnyal megváltozik. Természetesen, hogy ezt a plugint használjuk, azt az oldalra kell csatlakoztatni:

Ne feledje, hogy a klikk eseménykezelő helyett p elemekre a jQuery Listen plugint használjuk. átadni egy eseményt, amelyet nyomon kell követni, azokat az elemeket, amelyekkel ezt az eseményt hozzá kell rendelni, és egy olyan funkciót, amelyet az esemény bekövetkezésekor végrehajtanak. Láthatja a plugin munkáját - itt egy példa.




Kapcsolódó cikkek