jQuery wird ausgeführt, nachdem alle anderen JS ausgeführt wurden

8

In der Vergangenheit habe ich $ (window) .onload verwendet, um einen Codeblock auszuführen, nachdem andere Skripte geladen wurden. In diesem Fall habe ich nicht die Möglichkeit, die Ladereihenfolge der JS-Dateien zu ändern, und der Code, mit dem ich mich beschäftige, muss DOM-Knoten bearbeiten, die dynamisch von einer anderen JS-Datei eingefügt werden, die weiter unten auf der Seite geladen wird. Beide Skripts befinden sich am unteren Ende des Dokuments. Hat jemand Vorschläge für dieses Szenario?

    
jerome 31.03.2011, 02:39
quelle

5 Antworten

13

Wenn Sie wissen, welche Elemente zu erwarten sind, können Sie mit setInterval das DOM abfragen, um zu sehen, wann sie eingefügt wurden. So könnten Sie beispielsweise nach einem Element mit der ID foo :

suchen %Vor%     
Matt Ball 31.03.2011 02:46
quelle
2

Auch wenn Sie die Ladereihenfolge nicht ändern können, können Sie ändern, wie sie geladen wird?

Eine Sache, die ich in der Vergangenheit benutzt habe, als ich etwas JavaScript laden und Code ausführen wollte, nachdem ich sicher war, dass das Laden beendet wurde, ist jquery's $ .getScript:

%Vor%

Ссылка

    
Robert Hyatt 31.03.2011 03:07
quelle
1

Wenn Sie an zukünftige DOM-Knoten einen Event-Handler anhängen müssen, können Sie jQuery .live () verwenden. Sie können das livequery -Plugin verwenden.

Beispiel:

%Vor%

ruft die angegebene anonyme Funktion für alle aktuellen und zukünftigen Knoten mit der Klasse .nodes

auf     
Daniel 31.03.2011 03:16
quelle
1

Das Problem war, eine Variable zum Speichern des jQuery-Objekts zu deklarieren, bevor sich das Objekt auf der Seite befand. Das Verschieben dieser Deklarationen innerhalb eines Codeblocks, der nur nach einem Klick-Ereignis ausgeführt wurde, das nur nach $ (window) gebunden war, löste das Problem.

Danke aber allen für die Tipps!

    
jerome 31.03.2011 17:14
quelle
0

Wenn das andere Skript vollständig innerhalb eines load-Ereignisses ausgeführt wird, können Sie demselben Ereignis einen Handler hinzufügen und Ihren Code in einen setTimeout -Aufruf setzen (mit einer Verzögerung von 1 ), wodurch der Code zur Ausführung gezwungen wird während der nächsten Pause.

    
SLaks 31.03.2011 02:43
quelle

Tags und Links