Heim >Web-Frontend >js-Tutorial >Direkte vs. delegierte Ereignisbehandlung in jQuery: Wann sollte ich welche verwenden?
Direkte vs. delegierte Ereignisbehandlung mit jQuery .on()
Bei Verwendung der jQuery .on()-Methode für die Ereignisbehandlung gibt es ist ein grundlegender Unterschied zwischen direkten und delegierten Ereignishandlern.
Direkte Ereignishandler hängen, wie der Name schon sagt, Ereignis-Listener direkt an bestimmte Ereignisse an Elemente. Beispiel:
$("div#target span.green").on("click", function() { alert($(this).attr("class") + " is clicked"); });
In diesem Szenario ist der Click-Event-Listener direkt an jedes span.green-Element im div#target-Container gebunden.
Delegierte Event-Handler hingegen , hängen Sie Ereignis-Listener an ein übergeordnetes Element an und delegieren Sie die Verarbeitung von Ereignissen an untergeordnete Elemente, die einem Selektor entsprechen. Zum Beispiel:
$("div#target").on("click", "span.green", function() { alert($(this).attr("class") + " is clicked"); });
Hier wird der Click-Event-Listener an den div#target-Container angehängt, der dann die Verarbeitung von Klicks an alle untergeordneten span.green-Elemente delegiert.
Der Schlüssel Der Unterschied besteht darin, dass bei der delegierten Ereignisbehandlung der Handler nicht aufgerufen wird, wenn das Ereignis direkt im übergeordneten Element auftritt. Stattdessen sprudelt das Ereignis im DOM-Baum nach oben und der Handler wird nur für untergeordnete Elemente aufgerufen, die mit dem bereitgestellten Selektor übereinstimmen. Dies kann für dynamische Inhalte von Vorteil sein, bei denen neue Elemente hinzugefügt oder entfernt werden können, da der Ereignis-Listener automatisch auf alle übereinstimmenden Nachkommen angewendet wird, ohne dass eine explizite Bindung erforderlich ist.
Im bereitgestellten Beispiel sowohl direkte als auch delegierte Ereignisse Handler führen zum gleichen Verhalten, da keine dynamischen Elemente hinzugefügt oder entfernt werden. Wenn jedoch neue span.green-Elemente dynamisch zur Seite hinzugefügt würden, würde nur der delegierte Ereignishandler ihre Klickereignisse verarbeiten.
Das obige ist der detaillierte Inhalt vonDirekte vs. delegierte Ereignisbehandlung in jQuery: Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!