Heim >Web-Frontend >js-Tutorial >Warum funktioniert mein jQuery „on('change')' nicht bei dynamisch hinzugefügten Dropdowns?

Warum funktioniert mein jQuery „on('change')' nicht bei dynamisch hinzugefügten Dropdowns?

Barbara Streisand
Barbara StreisandOriginal
2024-12-15 13:43:12378Durchsuche

Why Doesn't My jQuery `on('change')` Work on Dynamically Added Dropdowns?

Umstellung von jQuerys live() auf on(): Was ist falsch gelaufen?

In jQuery wurde die live()-Methode durch ersetzt on() für die Ereignisbehandlung. Trotz der Migration auf jQuery 1.7 und der Verwendung von on('change') zur Erkennung von Änderungen in dynamisch hinzugefügten Dropdowns blieb der Event-Handler jedoch inaktiv.

Die Lösung

Die Der Hauptunterschied liegt in der Art und Weise, wie on() die Ereignisdelegierung handhabt. Im Gegensatz zu live(), das Event-Handler an dynamisch erstellte Elemente anhängt, bindet on() Handler nur an Elemente, die zum Zeitpunkt des Aufrufs vorhanden sind.

Um die gleiche Funktionalität wie live() zu erreichen, muss on( )-Syntax sollte wie folgt geändert werden:

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

Dadurch wird der Ereignishandler an den Dokumentkörper gebunden, wodurch sichergestellt wird, dass Handler auch für hinzugefügte Elemente angehängt werden dynamisch.

Alternativ können Sie für eine gezieltere Ereignisbehandlung in Betracht ziehen, Handler an das nächstmögliche Vorgängerelement anzuhängen.

In der jQuery-Dokumentation wird ausdrücklich darauf hingewiesen, dass sich on() anders verhält als seine Vorgänger, und dieses Ereignis wird hervorgehoben Handler sind nur an vorhandene Elemente gebunden. Dies erklärt, warum die ursprüngliche Implementierung mit on('change') nicht ausgelöst wurde.

Das obige ist der detaillierte Inhalt vonWarum funktioniert mein jQuery „on('change')' nicht bei dynamisch hinzugefügten Dropdowns?. 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