Ausführen von jQuery, nachdem alle anderen JS ausgeführt wurde
In der Vergangenheit habe ich $(window).onload ausführen einen code-block nach dem anderen Skripten geladen haben. In diesem Fall habe ich nicht die Möglichkeit zum ändern der Ladereihenfolge von JS-Dateien und den code, dass ich besorgt bin, die Bedürfnisse zu manipulieren, DOM-Knoten, die dynamisch eingefügt von einer anderen JS-Datei, die geladen wird, weiter unten auf der Seite. Beide Skripte befinden sich in der Nähe des unteren Rand des Dokuments. Hat jemand irgendwelche Vorschläge für dieses Szenario?
- Wie Sie genau ist das andere Skript ausgeführt wird? Macht es AJAX verwenden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wissen, welche Elemente zu erwarten, die Sie verwenden können
setInterval
Umfrage der DOM zu sehen, wenn Sie schon eingefügt. Dies ist zum Beispiel, wie Sie eine Umfrage für ein element mit der IDfoo
:document.getElementById
ist effizienter, aber dann wieder, jQuery ist nicht verwendet für seine raw-Leistung. Es ist auch optimiert für diese Art der einfach-Selektor. Mehr zu dem Punkt: es gibt keinen wahrnehmbaren Unterschied zwischen den beiden, da diese Funktion ausgeführt wird, mit einer relativ langsamen und festen, rate.Obwohl Sie nicht ändern können, den laden bestellen, können Sie ändern, wie es geladen ist?
Eine Sache, die ich in der Vergangenheit verwendet haben, wenn ich wollte laden, javascript und ausführen von code, nachdem ich sicher war, dass es fertig war, ist das laden von jquery $.getScript:
http://api.jquery.com/jQuery.getScript/
Wenn Sie brauchen, um fügen Sie einen Ereignis-handler zur künftigen DOM-Knoten, den Sie verwenden konnten, jQuery .live(), ansonsten können Sie livequery plugin.
Beispiel:
aufgerufen die mitgelieferte anonyme Funktion für alle gegenwärtigen und zukünftigen Knoten mit der Klasse
.nodes
Das problem wurde versucht, eine variable zu deklarieren, die zum speichern der jQuery-Objekt, bevor das Objekt auf der Seite. Bewegen diese Erklärungen innerhalb von einem code-block, wurde nur ausgeführt, wenn ein click-Ereignis, das nur dazu verpflichtet, nach $(window).laden löste das problem.
Danke an alle für die Tipps, aber!
Wenn das andere Skript ausgeführt wird, die vollständig innerhalb einer load-Ereignis, fügen Sie einen handler auf das gleiche Ereignis und fügen Sie Ihren code in eine
setTimeout
call (mit einer Verzögerung von1
), wird die Kraft dein code der ausgeführt werden soll in der nächsten Pause.