Heim >Web-Frontend >js-Tutorial >Warum funktioniert mein jQuery on()-Ereignishandler nicht für dynamisch hinzugefügte Elemente?

Warum funktioniert mein jQuery on()-Ereignishandler nicht für dynamisch hinzugefügte Elemente?

DDD
DDDOriginal
2024-12-06 02:32:12213Durchsuche

Why Doesn't My jQuery on() Event Handler Work on Dynamically Added Elements?

Eine Lösung für den on()-Ereignishandler von jQuery finden

In jQuery der Übergang von live() zu on() für die Ereignisbehandlung war ein Diskussionsthema. Benutzer sind auf Probleme gestoßen, bei denen der on()-Ereignishandler nicht ausgelöst wird. Um dieses Problem anzugehen, wollen wir uns mit dem Problem befassen und die Lösung finden.

In der Dokumentation für on() heißt es eindeutig, dass Ereignishandler nur an Elemente gebunden sind, die auf der Seite vorhanden sind, wenn der Code ausgeführt wird. Dies steht in krassem Gegensatz zum Verhalten von live(), bei dem Ereignishandler an dynamisch zur Seite hinzugefügte Elemente angehängt wurden.

Um eine ähnliche Funktionalität wie live() zu erreichen, muss das folgende Muster verwendet werden:

$(document.body).on('change', 'select[name^="income_type_"]', function() {
    alert($(this).val());
});

Dieser Ansatz bindet den Event-Handler nicht nur an vorhandene Elemente, sondern auch an Elemente, die in Zukunft hinzugefügt werden. Für eine optimale Leistung ist es unbedingt erforderlich, den Event-Handler so nah wie möglich an die Zielelemente zu binden.

Zusammenfassend lässt sich sagen, dass es beim Übergang von live() zu on() entscheidend ist, Event-Handler an dynamisch hinzugefügte Elemente zu binden, z wie die in Dropdown-Listen. Dadurch wird sichergestellt, dass der Code wie erwartet funktioniert und effektiv auf Benutzerinteraktionen reagiert.

Das obige ist der detaillierte Inhalt vonWarum funktioniert mein jQuery on()-Ereignishandler nicht für dynamisch hinzugefügte Elemente?. 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
Vorheriger Artikel:HMPL-Integration mit JSON5Nächster Artikel:HMPL-Integration mit JSON5