Heim >Web-Frontend >js-Tutorial >Warum funktioniert mein jQuery on()-Ereignishandler nicht für dynamisch hinzugefügte Elemente?
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!