Direkte vs. delegierte Ereignisbehandlung in jQuery .on()
Die jQuery .on()-Methode bietet zwei Optionen für die Ereignisbehandlung: direkt und delegiert. Im Zusammenhang mit der delegierten Behandlung heißt es in der Dokumentation, dass der Ereignishandler nicht aufgerufen wird, wenn das Ereignis direkt auf dem gebundenen Element auftritt, sondern nur für Nachkommen, die mit dem Selektor übereinstimmen. Dies wirft jedoch die Frage auf, was genau mit „führt den Handler für beliebige Elemente aus“ gemeint ist.
Direkte Ereignisbehandlung
Bei der direkten Ereignisbehandlung ein Ereignishandler wird mithilfe der folgenden Syntax direkt einem Element zugewiesen:
$("selector").on("event", function() {...});
In diesem Fall wird der Ereignishandler an jedes Element angehängt, das mit dem Selektor übereinstimmt. Der folgende Code weist beispielsweise jedem einen Click-Handler zu. Element mit der Klasse grün innerhalb des Delegierte Ereignisbehandlung Bei der delegierten Ereignisbehandlung wird ein Ereignishandler einem übergeordneten Element mithilfe der folgenden Syntax zugewiesen: In diesem Fall wird der Ereignishandler dem übergeordneten Element zugewiesen, er reagiert jedoch nur auf Ereignisse, die auf untergeordneten Elementen auftreten, die mit dem übereinstimmen Kinderauswahl. Dieser Ansatz ist nützlich, um Ereignishandler an dynamische Inhalte anzuhängen, die beim ersten Laden der Seite nicht vorhanden sind. Betrachten Sie das folgende Beispiel: In diesem Beispiel ist der Klick-Handler angehängt zum Hauptunterscheidung Der Hauptunterschied zwischen direkter und delegierter Ereignisbehandlung liegt in der Beziehung zwischen dem Zielelement und dem Element, das das Ereignis behandelt . Bei der direkten Ereignisbehandlung ist das Zielelement auch das Element, das das Ereignis verarbeitet. Bei der delegierten Ereignisbehandlung ist das Zielelement das übergeordnete Element des Elements, das das Ereignis behandelt. Praktische Auswirkungen Im Allgemeinen wird die delegierte Ereignisbehandlung bei der Arbeit mit bevorzugt dynamische Inhalte, die sich im Laufe der Zeit ändern können. Durch das Anhängen von Ereignishandlern an übergeordnete Elemente stellen Sie sicher, dass Ereignisse auch dann verarbeitet werden, wenn der Seite neue Elemente hinzugefügt werden. Die direkte Ereignisbehandlung eignet sich besser für statische Inhalte, die sich im Laufe der Zeit nicht ändern. Das obige ist der detaillierte Inhalt vonDirekte vs. delegierte Ereignisbehandlung in jQuery .on(): Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!$("div#target span.green").on("click", function() {
alert($(this).attr("class") + " is clicked");
});
$("parent").on("event", "child selector", function() {...});
$("div#target").on("click", "span.green", function() {
alert($(this).attr("class") + " is clicked");
});