Ereignisbehandlung mit dynamischem HTML: jQuery .live() vs. .on()
Beim Arbeiten mit dynamisch geladenem HTML, Hinzufügen von Ereignishandlern auf neu erstellte Elemente kann eine Herausforderung sein. In dieser Frage werden die Unterschiede zwischen den Methoden .live() und .on() von jQuery zum Anhängen von Klickereignissen an dynamisch geladene Elemente untersucht.
In jQuery v1.7.1 ist .live() veraltet. Stattdessen wird .on() für die Ereignisbehandlung mit dynamisch erstellten Inhalten empfohlen. Der Fragesteller stieß jedoch auf eine Situation, in der .on() keine Klickereignisse für Elemente registrieren konnte, die dynamisch mit $('#parent').load() geladen wurden.
Die richtige Methode für dieses Szenario ist die Ereignisdelegierung. erreicht mit .on(). Bei der Ereignisdelegierung wird der Ereignishandler an ein übergeordnetes Element angehängt, das vor dem Laden des dynamischen Inhalts vorhanden ist. Der Ereignishandler wird dann so konfiguriert, dass er auf Ereignisse wartet, die von den dynamisch erstellten Elementen stammen.
Um beispielsweise einen Klick-Handler an #child-Elemente anzuhängen, die dynamisch in #parent geladen werden:
$('#parent').on("click", "#child", function() {});
Dieser Ansatz ermöglicht es dem Event-Handler, Klickereignisse auf #child-Elementen zu erfassen, auch wenn die Elemente nicht vorhanden waren, als der Event-Handler angehängt wurde. Dies liegt daran, dass das Click-Ereignis zum #parent-Element übergeht, in dem der Event-Handler für #child-Elemente definiert ist.
Die Ereignisdelegation löst das Problem des Hinzufügens von Click-Handlern zu dynamisch erstellten Elementen und ist der empfohlene Ansatz, wenn Arbeiten mit dynamisch geladenem HTML.
Das obige ist der detaillierte Inhalt vonjQuery-Ereignisbehandlung: .live() vs. .on() für dynamisch geladene Elemente?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!