Poniższe pytanie jest inspirowane przez this blog entry w ajaxian.com i this comment by paul irish.Dlaczego wyrażenie na żywo musi być ocenione w jQuery
Oto sposób deklarowania wydarzenia na żywo.
$("li a").live(...)
Zgodnie this blog entry, to jest moje zrozumienie, że żyć wydarzenia są niczym innym, jak połowu wszystko na poziomie dokumentu. Każde zdarzenie, które pęcznieje do samego końca, jest przechwytywane przez zdarzenia na żywo i jeśli selektor jest zgodny, wywoływana jest funkcja.
To jest moje zrozumienie, że na dokumencie gotowy jeśli modlę
$("li a").live('click', ..)
potem wszystko jQuery powinien zrobić, to umieścić dosłowny selektor „li się” gdzieś w pamięci. Teraz, gdy dochodzi do kliknięcia i jeśli to kliknięcie powoduje bańki do samego końca, to na żywo należy sprawdzić, jaki jest element docelowy. Jeśli element docelowy spełnia regułę "li a", wówczas funkcja powinna zostać uruchomiona, w przeciwnym razie zignoruje to wydarzenie bąbelkowane.
Na podstawie tego domniemania na dokumencie gotowy kiedy wzywam
$("li a").live('click', ..)
następnie idealnie jQuery nie powinny faktycznie patrząc na cały element dopasowanie „li a” ponieważ jQuery nie nic z tych elementów zrobić. Wiem na pewno, że elementy, które są obecnie obecne w dokumencie pasującym do "li a", nie są powiązane z żadną obsługą zdarzenia.
Jeśli wszystko, co jQuery musi zrobić, to umieścić dosłownie "li a" na poziomie katalogu głównego, po co szukać elementów spełniających kryteria "li a" w przygotowanym dokumencie. Ale w oparciu o link komentarza, o którym wspomniałem na górze, wygląda na to, że jQuery szuka elementu na gotowym dokumencie.
Moje pytanie brzmi: dlaczego metoda live powinna znajdować wszystkie metody "li a", gdy nie zamierza nic z nimi zrobić. Wydaje mi się, że składnia na żywo powinna być czymś w rodzaju czegoś podobnego do tego, co na przykład:
$.live('li a', 'click', function(){})
Czy brakuje mi tutaj czegoś?