Auswählen von dom-Elementen, nachdem html in eine Seite mit ajax eingefügt wurde

8

Ich habe eine Ajax-Tab-Navigation erstellt, bei der HTML in die Seite eingefügt wurde. Der Code sieht so aus:

%Vor%

ok ... also füge ich mein Markup in meinen HTML-Code ein. Jetzt muss ich dom Elemente aus dem eingefügten HTML auswählen, aber ich kann nicht. Ich habe den folgenden Code:

%Vor%

Hier erzeuge ich die Auswahloptionen dynamisch. Wenn ich das versuche:

%Vor%

es funktioniert nicht. Wie kann ich Javascript verwenden, nachdem ich den HTML-Code über Ajax angehängt habe?

    
Mythriel 27.02.2012, 13:59
quelle

2 Antworten

23

Verwenden Sie Delegate-Ereignis wie on für Version 1.7 +

%Vor%

Um die Leistung anstelle von body zu erhöhen, sollten Sie das nächste statische Element (nicht hinzugefügt mit ajax oder javascript) schreiben, das " chapters-select

enthält

Wenn Sie eine ältere Version von jQuery verwenden, wählen Sie die geeignete Methode mit der folgenden Tabelle:

%Vor%

on Dokumentation:

  

Wenn ein Selektor bereitgestellt wird, wird der Ereignishandler als delegiert bezeichnet. Der Handler wird nicht aufgerufen, wenn das Ereignis direkt auf dem gebundenen Element auftritt, sondern nur für Nachkommen (innere Elemente), die mit dem Selektor übereinstimmen. jQuery bubbelt das Ereignis vom Ereignisziel bis zum Element, an dem der Handler angehängt ist (d. h. innerstes zum äußersten Element) und führt den Handler für alle Elemente auf diesem Pfad aus, die dem Selektor entsprechen.

     

Event-Handler sind nur an die aktuell ausgewählten Elemente gebunden; Sie   muss zu dem Zeitpunkt auf der Seite vorhanden sein, zu dem Ihr Code den Aufruf von .on () aufruft.   Um sicherzustellen, dass die Elemente vorhanden sind und ausgewählt werden können, führen Sie das Ereignis aus   Bindung innerhalb eines Dokument-Ready-Handlers für Elemente, die sich in der   HTML-Markup auf der Seite. Wenn neues HTML in die Seite eingefügt wird,   Wählen Sie die Elemente aus und fügen Sie Ereignishandler nach dem neuen HTML-Code hinzu   in die Seite gelegt. Oder verwenden Sie delegierte Ereignisse, um ein Ereignis anzuhängen   Handler, wie weiter unten beschrieben.

    
gdoron 27.02.2012, 14:03
quelle
1

Führen Sie dies einmal nach dem ersten Laden der Seite aus.

%Vor%

Dies entspricht der Antwort von @ gdoron, ist aber mit Versionen von jQuery älter als 1.7 kompatibel.

    
wheresrhys 27.02.2012 14:04
quelle

Tags und Links