Heim >Web-Frontend >js-Tutorial >Warum funktioniert mein jQuery „on('change')' nicht bei dynamisch hinzugefügten 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!