3 Stimmen

jQuery: Warten auf das Laden eines Elements (Video-Tag - dynamisch erzeugt)

Ohne Zeitüberschreitung möchte ich jQuery verwenden, um zu prüfen, ob ein Video-Tag in Kürze generiert wird. Zu dem Zeitpunkt, zu dem wir nach dem Video-Tag suchen, existiert es noch nicht.

Ich könnte window.load verwenden, um zu warten, bis das gesamte Fenster geladen ist, und dann die Callback-Funktion aufrufen:

window.load = function () {player = jQuery("#videoid"; }

aber gibt es irgendwie zu "warten", bis das bestimmte Video-Tag eingefügt/geladen in den Körper dann die Callback-Funk ausführen? etwas wie:

jQuery("#videoid").bind('load', function() { player = jQuery("#videoid"); })

vielen Dank im Voraus

10voto

Jasper Punkte 75123

Sie können eine Bindung an den DOMNodeInserted Ereignis für das Element, so dass beim Einfügen des Elements ein Ereignis-Handler ausgeführt wird. Dies funktioniert nicht in IE8 und älter, aber auch nicht in <video> Tags:

jQuery(document).delegate('video', 'DOMNodeInserted', function () {
    alert('Wana watch a video?');
});

Beachten Sie, dass $(<root element>).on(<event>, <selector>, <event handler>) ist dasselbe wie $(<root element>).delegate(<selector>, <event>, <event handler>) .

Hier ist eine Demo: http://jsfiddle.net/vW4Pg/

UPDATE

Wenn Sie an der Umsetzung dieser Idee interessiert sind, sollten Sie sich das hier ansehen: https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events

Danke für den Kommentar @JFK.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X