Ich versuche, das jQuery-Äquivalent dieses JavaScript-Methodenaufrufs zu finden:
document.addEventListener('click', select_element, true);
Ich bin so weit gekommen:
$(document).click(select_element);
Dies führt jedoch nicht zum gleichen Ergebnis wie der letzte Parameter der JavaScript-Methode - ein Boolescher Wert, der angibt, ob der Ereignishandler in der Erfassungs- oder Blasenphase ausgeführt werden soll (nach meinem Verständnis von http://www.quirksmode.org) /js/events_advanced.html ) - wird weggelassen .
Wie spezifiziere ich diesen Parameter oder erreiche auf andere Weise dieselbe Funktionalität mit jQuery?
Antworten:
Nicht alle Browser unterstützen die Ereigniserfassung (z. B. Internet Explorer-Versionen unter 9 nicht), aber alle unterstützen das Sprudeln von Ereignissen. Aus diesem Grund werden in dieser Phase Handler an Ereignisse in allen browserübergreifenden Abstraktionen gebunden, einschließlich jQuery.
Das, was in jQuery am nächsten kommt, ist die Verwendung
bind()
(ersetzt durchon()
jQuery 1.7+) oder die ereignisspezifischen jQuery-Methoden (in diesem Fallclick()
, diebind()
ohnehin intern aufgerufen werden). Alle nutzen die Blasenphase eines erhöhten Ereignisses.quelle
Ab jQuery 1.7
.on()
ist dies nun die bevorzugte Methode zum Binden von Ereignissen anstelle von.bind()
:Von http://api.jquery.com/bind/ :
Die Dokumentationsseite befindet sich unter http://api.jquery.com/on/
quelle
Das nächste wäre die Bindefunktion:
http://api.jquery.com/bind/
quelle
Eine Sache zu beachten ist , dass jQuery Ereignismethoden nicht Feuer / Falle
load
aufembed
Tags , die SVG DOM enthalten , die Lasten als separates Dokument imembed
Tag. Die einzige Möglichkeit, einload
Ereignis in diesen Fällen abzufangen, war die Verwendung von rohem JavaScript.Das wird nicht funktionieren (ich habe versucht ,
on
/bind
/load
Methoden):Dies funktioniert jedoch:
quelle
$img
?Sie sollten jetzt die
.on()
Funktion verwenden, um Ereignisse zu binden.quelle
quelle
Im Mozilla Development Network (MDN) finden Sie eine hervorragende Beschreibung dieses Problems für Standard-JavaScript (wenn Sie sich nicht auf jQuery verlassen oder es allgemein besser verstehen möchten):
https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener
Hier ist eine Diskussion des Ereignisflusses von einem Link in der obigen Behandlung:
http://www.w3.org/TR/DOM-Level-3-Events/#event-flow
Einige wichtige Punkte sind:
quelle