Próbuję znaleźć odpowiednik jQuery tego wywołania metody JavaScript:
document.addEventListener('click', select_element, true);
Dotarłem do:
$(document).click(select_element);
ale nie osiąga tego samego wyniku, co ostatni parametr metody JavaScript - wartość logiczna wskazująca, czy procedura obsługi zdarzeń powinna być wykonywana w fazie przechwytywania czy propagacji (według mojego zrozumienia z http://www.quirksmode.org /js/events_advanced.html ) - jest pominięty.
Jak określić ten parametr lub w inny sposób osiągnąć tę samą funkcjonalność za pomocą jQuery?
Odpowiedzi:
Nie wszystkie przeglądarki obsługują przechwytywanie zdarzeń (na przykład wersje Internet Explorera mniejsze niż 9 nie obsługują), ale wszystkie obsługują propagację zdarzeń, dlatego jest to faza używana do wiązania programów obsługi zdarzeń we wszystkich abstrakcjach między przeglądarkami, w tym jQuery.
Najbliższe do tego, czego szukasz w jQuery, używa
bind()
(zastąpione przezon()
jQuery 1.7+) lub specyficznych dla zdarzenia metod jQuery (w tym przypadkuclick()
, które ibind()
tak wywołują wewnętrznie). Wszyscy używają fazy bąbelkowej podniesionego zdarzenia.źródło
Począwszy od jQuery 1.7,
.on()
jest teraz preferowaną metodą wiązania zdarzeń, a nie.bind()
:Od http://api.jquery.com/bind/ :
Strona dokumentacji znajduje się na stronie http://api.jquery.com/on/
źródło
Najbliższą rzeczą byłaby funkcja bind:
http://api.jquery.com/bind/
źródło
Należy zauważyć, że metody zdarzeń jQuery nie uruchamiają / pułapkują
load
naembed
znaczniki zawierające SVG DOM, który ładuje się jako oddzielny dokument wembed
znaczniku. Jedynym sposobem, w jaki znalazłem pułapkę na takieload
zdarzenie, było użycie surowego JavaScript.To nie zadziała (próbowałem
on
/bind
/load
metody):Działa to jednak:
źródło
$img
?Powinieneś teraz użyć
.on()
funkcji do powiązania zdarzeń.źródło
źródło
Oto doskonałe rozwiązanie tego problemu w Mozilla Development Network (MDN) dla standardowego JavaScript (jeśli nie chcesz polegać na jQuery lub ogólnie rozumiesz go lepiej):
https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener
Oto omówienie przepływu zdarzeń z linku w powyższym leczeniu:
http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
Niektóre kluczowe punkty to:
źródło