Warum funktioniert eine jQuery-Änderungsfunktion nicht nach dem Laden von HTML mit AJAX?

7

Ich lade ein Formular und beziehe dynamisch eine Auswahl über AJAX aus einer PHP-Datei. Vor der Implementierung der dynamischen AJAX-Bestückungsauswahl funktioniert meine Änderungsfunktion (sie zeigt nur eine andere Eingabe an, wenn ein Benutzer "Andere" auswählt). Jetzt funktioniert die Änderungsfunktion nicht mehr.

Ich weiß, dass die Ready-Funktion ausgelöst wird, weil die jStepper-Funktionen ausgeführt werden. Ich habe das mit der Änderungsfunktion in und außerhalb der Bereit-Funktion versucht. Ich habe das Gefühl, dass die Change-Funktion geladen wird, bevor der AJAX-Befehl beendet ist, aber ist das wirklich wichtig?

%Vor%     
ahhchuu 29.03.2012, 16:35
quelle

3 Antworten

23

ändern Sie dies:

%Vor%

bis

%Vor%

EDIT3: Dies würde am besten nach einer Untersuchung Ihres Codes genauer aussehen:

%Vor%

, da es am nächsten an das betreffende Element bindet.

Sie sollten auch den Ajax-Aufruf in das fertige Skript schreiben, das ich mir vorstellen würde.

Der Grund dafür ist, dass im DOM nichts zu binden ist, wenn es instanziiert wird. Wenn Sie auf diese Weise das Zeichen .on verwenden, binden Sie es stattdessen an das Dokument. Wenn Sie ein anderes "fixed" -Element hatten, das es umschließt, ist es besser, wenn Sie das anstelle von "document" verwenden, da dies wahrscheinlich eine bessere Leistung bringt.

BEARBEITEN: Beachten Sie, dass Sie die Verwaltung von Änderungsereignissen auch hinzufügen können, nachdem Sie das Element als Teil der Beendigung des Ajax-Aufrufs injiziert haben. Wenn Sie dies mehr als einmal tun, sollten Sie es in diesem Fall zuerst lösen.

EDIT2: da gibt es Fragen / Kommentare: AUS DER DOKUMENTATION: Ссылка

  

Viele delegierte Event-Handler am Anfang des Dokuments anhängen   Baum kann die Leistung beeinträchtigen. Jedes Mal, wenn das Ereignis auftritt, muss jQuery   Vergleichen Sie alle Selektoren aller angehängten Ereignisse dieses Typs mit allen   Element im Pfad vom Ereignisziel bis zum Anfang des Ziels   Dokument. Um eine optimale Leistung zu erzielen, hängen Sie delegierte Ereignisse an ein Dokument an   Standort so nah wie möglich an den Zielelementen. Übermäßig vermeiden   Verwendung von document oder document.body für delegierte Ereignisse auf large   Dokumente.

    
Mark Schultheiss 29.03.2012, 16:37
quelle
1

Ich denke, das Element, an das Sie in der Zeile binden:

%Vor%

existiert noch nicht im DOM, daher wird das Ereignis nicht gebunden.

Versuchen Sie es mit der Funktion .live :

%Vor%

Oder stellen Sie sicher, dass Ihre DOM-Elemente vorhanden sind, bevor Sie versuchen, Ereignisse an sie zu binden.

    
Walter Stabosz 29.03.2012 16:43
quelle
-1

Arbeitet aus dem Dokument bereit für Änderungen funktioniert Ajax-Funktionalität

%Vor%

});

    
Vinoth Smart 18.05.2017 11:17
quelle

Tags und Links