Heim > Web-Frontend > js-Tutorial > Direkte vs. delegierte Ereignisbehandlung in jQuery: Welchen „.on()'-Ansatz sollten Sie wählen?

Direkte vs. delegierte Ereignisbehandlung in jQuery: Welchen „.on()'-Ansatz sollten Sie wählen?

Patricia Arquette
Freigeben: 2024-12-21 12:13:10
Original
140 Leute haben es durchsucht

Direct vs. Delegated Event Handling in jQuery: Which `.on()` Approach Should You Choose?

Delegieren der Ereignisbehandlung in jQuery: Direkt vs. Delegiertes .on()

Die jQuery-Methode .on() ermöglicht die Registrierung von Ereignishandlern auf DOM-Elementen. Zwei unterschiedliche Ansätze zur Ereignisbehandlung sind die direkte und die delegierte Bindung. Die direkte Bindung hängt Ereignishandler direkt an bestimmte Elemente an, während die delegierte Bindung die Ereignisbehandlung für Elemente ermöglicht, die einem Selektor innerhalb eines übergeordneten Elements entsprechen.

Im letzten Satz des angegebenen Absatzes zu delegierten Ereignishandlern heißt es, dass jQuery „ausgeführt“ wird der Handler für alle Elemente ... passend zum Selektor. Dies bezieht sich auf den Event-Bubbling-Mechanismus in DOM.

Wenn ein delegierter Event-Handler mithilfe von .on() mit einem Selektor an ein übergeordnetes Element angehängt wird, werden Ereignisse nicht nur für die ausgewählten Elemente, sondern auch für deren Nachkommen verarbeitet die zum Selektor passen. Während das Ereignis im DOM-Baum nach oben sprudelt, prüft jQuery, ob Elemente entlang des Pfads mit dem Selektor übereinstimmen, und löst den Handler aus, wenn eine Übereinstimmung gefunden wird.

Um den Unterschied zu veranschaulichen, betrachten Sie die folgenden Beispiele:

$("div#target span.green").on("click", function() {
  alert($(this).attr("class") + " is clicked");
});
Nach dem Login kopieren

Dies bindet den Click-Handler direkt an alle Elemente mit der grünen Klasse innerhalb des #target-Div. Jedes dieser Elemente verarbeitet unabhängig Klickereignisse.

Im Gegensatz dazu wird im Folgenden eine delegierte Bindung verwendet:

$("div#target").on("click", "span.green", function() {
  alert($(this).attr("class") + " is clicked");
});
Nach dem Login kopieren

Hier ist der Klickereignishandler an das #target-Div angehängt, aber das Selektor „Ereignis sprudelt“ auf Elemente, die mit „grün“ übereinstimmen. Dies bedeutet, dass alle zukünftigen Elemente mit der „grünen“ Klasse, die innerhalb des #target-Divs erstellt werden, lösen ebenfalls den Click-Handler aus.

Delegierte Bindung ist besonders nützlich, wenn Elemente dynamisch zur Seite hinzugefügt und daraus entfernt werden, da sie sicherstellt, dass neue Elemente das Ereignis erben Handhabungsverhalten, ohne dass eine manuelle Bindung erforderlich ist.

Das obige ist der detaillierte Inhalt vonDirekte vs. delegierte Ereignisbehandlung in jQuery: Welchen „.on()'-Ansatz sollten Sie wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage