Jquery-Ereignis wird nicht für DOM-Elemente ausgelöst, die nach dem Laden der Seite erstellt wurden [duplizieren]

8

Ich habe eine Seite, die eine calculate () - Funktion auslöst, wenn ein html5-Zahlenfeld geändert wird. Ich habe fast jedes Ereignis gebunden, das ich mir vorstellen kann, und es funktioniert für die ursprünglich geladenen DOM-Elemente.

Wenn ich jedoch nach dem Laden des Doms Elemente hinzufüge, werden die Änderungsfunktionen nicht ausgelöst.

Ich habe eine Schaltfläche hinzugefügt, die die Funktion calculate () ausführt. Wenn Sie auf klicken, wird sie für die neu erstellten Elemente sowie für die ursprünglichen Elemente ausgeführt.

Ich weiß also, dass der Code funktioniert, aber das Ereignis wird nicht für die neu erstellten dom-Elemente ausgelöst.

Jquery Trigger

%Vor%

Funktion berechnen

%Vor%

genRow-Funktion

%Vor%

HTML-Code

%Vor%     
Talon06 20.01.2014, 16:28
quelle

1 Antwort

34

Gegenwärtig wird eine direkte Bindung verwendet, die nur an ein Element angehängt wird, das zu dem Zeitpunkt auf der Seite vorhanden ist, an dem Ihr Code den Ereignisbindungsaufruf durchführt.

Sie müssen Event Delegation mit . on () Delegierte-Ereignisse-Ansatz, wenn Elemente dynamisch oder Manipulation Selektor (wie Entfernen und Hinzufügen von Klassen).

d. h.

%Vor%

Beispiel

%Vor%

Anstelle von document sollten Sie den nächstgelegenen statischen Container verwenden.

  

Die delegierten Ereignisse haben den Vorteil, dass sie Ereignisse von untergeordneten Elementen verarbeiten können, die dem Dokument zu einem späteren Zeitpunkt hinzugefügt werden. Durch die Auswahl eines Elements, das zum Zeitpunkt der Anbindung des delegierten Event-Handlers garantiert ist, können delegierte Ereignisse verwendet werden, um das click-Ereignis an dynamisch erstellte Elemente zu binden. Außerdem müssen Ereignishandler nicht häufig angehängt und entfernt werden.

    
Satpal 20.01.2014, 16:30
quelle

Tags und Links