Új hozzászólás Aktív témák
-
Karma
félisten
válasz Sk8erPeter #538 üzenetére
Nálam (Chrome 18.0.1025.142 m) a 8-as verziód nem töröl.
Igazából meg se hívódik a click handler - szerintem az on-t nem így kell nemlétező elemekre attacholni, hanem inkább a body-ra, és utána rászűrni. Mondjuk így[ Szerkesztve ]
“All nothings are not equal.”
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #538 üzenetére
Aha, javítottam .on()-ra, csak rosszul.
Itt a jól működő változat .on()-nal:
http://jsfiddle.net/Sk8erPeter/RqYYj/Közben rájöttem, hogy miért nem működött, azért, mert előtte így csináltam:
$(".del.enabled").on("click", function(event) {
var $parent = $(this).parent();
$parent.remove();
return false;
});HELYETTE ez a jó:
$("body").on("click", ".del.enabled", function(event) {
var $parent = $(this).parent();
$parent.remove();
return false;
});
VAGY MÉG JOBB (http://jsfiddle.net/Sk8erPeter/RqYYj/1/):
$(".stuffs_wrapper").on("click", ".del.enabled", function(event) {
var $parent = $(this).parent();
$parent.remove();
return false;
});Utóbbinál kevesebbet kell rohangászni a DOM-fában.
A magyarázata, amiért így kell megoldani:
.on() hivatalos doksi:"Note that .on() allows a click event on any paragraph--even new ones--since the event is handled by the ever-present body element after it bubbles to there."
A $(".del.enabled") selector pedig nincs mindig jelen a DOM-ban, pont ez fog a jövőben létrejönni, a gombnyomás hatására.
Legalábbis gondolom, hogy így magyarázható, de javítson ki valaki, ha ez ebben a formában pontatlan.
DE azt magyarázza már el valaki plíz, hogy ugyanez miért működik .live()-val:
http://jsfiddle.net/Sk8erPeter/RqYYj/2/============================================
Szerk.:
(#539) Karma :
igen, megelőztél, mert közben jó hosszan megírtam ezt a hsz.-t...
Inkább a fentire találj nekem magyarázatot, hogy miért működik pontosan ugyanez a régi öreg .live()-val![ Szerkesztve ]
Sk8erPeter