Heim >Web-Frontend >js-Tutorial >Direkte vs. delegierte Ereignisbehandlung in jQuery .on(): Wann sollte ich welche verwenden?

Direkte vs. delegierte Ereignisbehandlung in jQuery .on(): Wann sollte ich welche verwenden?

Linda Hamilton
Linda HamiltonOriginal
2025-01-03 14:55:39237Durchsuche

Direct vs. Delegated Event Handling in jQuery .on(): When Should I Use Which?

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

mit der ID-Ziel:

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

Delegierte Ereignisbehandlung

Bei der delegierten Ereignisbehandlung wird ein Ereignishandler einem übergeordneten Element mithilfe der folgenden Syntax zugewiesen:

$("parent").on("event", "child selector", function() {...});

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:

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

In diesem Beispiel ist der Klick-Handler angehängt zum

mit dem ID-Ziel. Es reagiert jedoch nur auf Klicks, die auf untergeordnete Elemente erfolgen, die Elemente mit der Klasse grün.

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!

Stellungnahme:
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