jquery events funktioniert nicht für Elemente angehängt
Habe ich diese Website hier
Wie Sie sehen können gibt es ein winziges Bild Schieberegler für "Bilder" und "Web Templates" Registerkarten, wo die Bilder rutschen von rechts nach Links, verschwindet dann und es erscheint dann ganz am Ende des übergeordneten Elements (eine <tr>
in meinem Fall).
Wenn Sie den Mauszeiger über die kleinen Bilder können Sie sehen, es ist die Vorschau auf der linken Seite.
So weit So gut.
Aber wenn Sie warten, bis die ersten Bilder, geht wieder das hover-Ereignis funktioniert nicht mehr.
Ist es möglich, dass jquery nicht sehen kann, dass neue Elemente angehängt am Ende der <tr>
tag?
- Bitte poste den relevanten code hier ein und machen Sie nicht uns besuchen Sie eine andere Website und waten durch die Quelle. Noch besser, poste ein Beispiel jsfiddle.net.
- Dieser FAQ-Abschnitt und den Abschnitt, bevor es beinhaltet die Antwort auf diese Frage. docs.jquery.com/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, wie Sie sind verbindlich, Ihre Termine werden nicht die Arbeit für dynamisch hinzugefügte Elemente. In preview_script.js Sie haben:
Wird dieser Event-Handler hinzufügen, um alle img-tags mit der Klasse "box_body", aber diejenigen, die angehängt werden später NICHT bekommen wird das event.
Versuchen Sie dies:
Dadurch wird das Ereignis zu dokumentieren, und nur Feuer, wenn die eventtarget ist img mit class = "box_body". Denn die Ereignisse propagieren, diese sollten funktionieren, solange nichts dazwischen Stoppt, bevor es erreicht Dokument (durch Aufruf von "event.stopPropagation()")
Wenn Sie wissen, das ÜBERGEORDNETE Element von ".box_body img", die Sie ersetzen können-Dokument mit, dass dies funktioniert ein wenig besser, wie Sie brauchen nicht zu warten, für die Veranstaltung zu verbreiten up zu dokumentieren.
Beachten Sie, dass Sie können das gleiche erreichen, Verwendung von Delegierten (falls nicht vorhanden):
Sie verwenden möchten .live () - Funktion von jQuery, um zu befestigen, event-Handler, um Elemente, die erstellt wird, in der Zukunft. Hier ist der doc: http://api.jquery.com/live/
hier ist Verwendung:
$.live
abgeschrieben jetzt, versuchen Sie es mit$.on
statt.In Ihrem
script.js
ändern Datei hier http://web-art.netau.net/script.jsLinie 112 bis 116 die folgenden
Der Grund dafür wurde schon oft beantwortet in SO. Suchen und finden eine gute Antwort. Wie
Veranstaltung verbindlich auf dynamisch erzeugte Elemente?
In jQuery, wie Ereignisse anfügen, um dynamische html-Elemente?
jquery binding events auf dynamisch geladene html-Elemente
$.delegate
ist nur ein wrapper für$.on
jetzt. Prüfen Sie hier, github.com/jquery/jquery/blob/master/src/event.js#L996Code wird es nützlich.
Sind Sie durch das entfernen der Elemente vom Anfang, und dann einfügen am Ende der Schieberegler?
Wenn die Antwort ist "ja", sollten Sie
statt
Bitte überprüfen Sie http://api.jquery.com/delegate/ für weitere Informationen.
Ich sehr empfehlen Sie zu verwenden livequery die Ihnen helfen, zusammen mit neu hinzugefügten Elemente in javascript. Ein Anwendungsbeispiel wäre:
Hatte ich mehrere Probleme mit
.on()
wie wird es gebunden Ereignisse zu Elementen, die nur einmal (nach dem Dokument bereit, zum Beispiel).Hoffe, es hilft.