JavaScript JQuery / 2 Document.ready Methoden

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Moin,

leider habe ich in meiner Laravel Anwendung zwei Methoden vom Typ
Code:
$( document ).ready(function() {
});

Das lässt sich auch nicht vermeiden. Komischerweise wird meine erste Methode nicht ausgeführt, allerdings wird diese zu erst aufgerufen.
Woran kann das liegen? Ich habe es auch schon versucht indem ich jQuery() nutze, leider keine Besserung.

Nachtrag:

Es liegt wohl an den DataTables scripts, ich kann das Ganze umgehen, indem ich in jeder Unterseite die Scripte neu initialisiere aber das wäre ja Blödsinn.
 
Zuletzt bearbeitet:
Du kannst .ready() sooft verwenden, wie Du magst, da gibt es keine besonderen Grenzen.

Haken: Die werden asynchron ausgeführt und Du hast aus einer "docready" Methode weder Zugriff auf andere "docreadies", noch kannst Du irgendwelche Annahmen treffen darüber, was eine der anderen "docready"-Methoden schon gemacht haben könnte.

Das sind alles gleichgestellte Init-Methoden, die jeweils(!) NUR von einen neuen, frisch geladenen Dokument ausgehen dürfen.

JQ interessiert sich auch im Normalfall nicht für Reihenfolgen. Da werden EventHandler registriert für Ereignisse, die auftreten. Die Ausführung ist aber nicht mehr deterministisch: hat man zwei Handler A und B registriert, dann kann A zuerst kommen oder B zuerst kommen oder es können beide gleichzeitig laufen -- weiß man vorher nicht und soll es vorher auch gar nicht wissen.


Wenn Du also Abhängigkeiten hast, die die Abarbeitung einer (der) "docready" Methoden erfordern, dann kannst Du dort ein Promise-Objekt einbauen (zB $.Deferred) und das dann erst an der benötigten Stelle nach der Abhängigkeit auflösen, sodaß an der richtigen Stelle der abhängige Code ausgeführt wird.
 
Danke für die ausführliche Antwort! Ich habe das Problem mit dem Klassiker gelöst.

Ich initialisiere meine Skripte am Ende der Application. Das hat nun dazugeführt das alles wie es soll funktioniert.
 
Zurück
Oben