Ausführen einer Funktion, bevor Sie $(document).ready () - Trigger
Ich angehängt habe mehrere Funktionen in mehreren Dateien in $(document).bereit und möchten, schließen Sie eine einzelne Funktion zu passieren, bevor Sie entweder als erste, dass $(document).bereit Griffe oder unabhängig voneinander auslösen, bevor die $(document).ready-handler.
Gibt es eine Möglichkeit, zu behandeln, die Reihenfolge der Funktionen, die jQuery Trigger intern als Teil von jQuery.fn.bereit oder Haken in eine Funktion, die Anrufe kurz vor jQuery.fn.bereit.
Ist die Bearbeitung jQuery.fn.bereit in eine 3rd-party-Skript sicher zu machen-oder wird es dazu führen, dass schreckliche knock-on-Effekte in andere 3rd-party-plugins (abgesehen von plugins die Bearbeiten jQuery.fn.selbst bereit)
[Edit]:
als Beispiel
$(document).ready(function b() {});
....
$(document).ready(function a() {/* optional setup*/});
....
$(document).ready(function c() {});
Funktion passieren muss, um die zunächst irrelevant in Ordnung, aber nur aufgerufen wird, wird auf ein paar Seiten. Ich kann nicht garantieren, um von b oder c, so frömmle ich, trigger, benutzerdefinierte Ereignisse am Anfang von b oder c ausgelöst wird.
So möchte ich eine generische Lösung, die ich verwenden können, um mit Nachdruck zu Ort a zu Beginn der jQuery-interne readyList oder Haken in die jQuery-ready-Funktion und Bearbeiten Sie es sicher so fordert es ein, bevor die anderen Funktionen in der readyList.
[Weitere Bearbeiten]
Wenn möglich, würde ich lieber nicht haben, um die Umgestaltung der Ausführung von javascript-code um, oder Tippen Sie auf einen anderen code abgesehen von der Funktion ein(). Ich bin mir bewusst, dass die Umstrukturierung würde mir erlauben, dieses problem zu umgehen, aber ich würde lieber schreiben Sie einfach eine einzelne Funktion wie
$.beforeReady(function a() {});
Sie können haben eine gültige Punkt. Trotzdem würde ich lieber erstellen Sie eine beforeReady ersetzt dann alle vorkommen .bereit mit .bind("geladen"), und das ersetzen beforeReady mit .bind("setup")
Dieses problem sollte behoben sein in der nächsten version von jQuery: github.com/jquery/jquery/pull/80
sind Ihre Bezugnahme auf die Tatsache, dass er Staaten, die bereit system wird eine überholung mit 1.5 ?
Ich weiß nicht, die aktuelle Zeitleiste für die überholung, um den Kern, oder, wenn dieser spezifischen änderung Hinzugefügt werden. Ich meinte, Sie zu teilen, es ist ein bekanntes Problem und wird behoben werden in einer zukünftigen version. Sorry =(
InformationsquelleAutor Raynos | 2010-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wäre dies eine Zeit, wo ich dies lösen Sie ein benutzerdefiniertes Ereignis, dass alle anderen Dateien würde
bind
zu, Sie würde nur eineready
handler, dem wäre so, dann auslösen des benutzerdefinierten Ereignisses.So, irgendwo in Ihrem code anstelle der Verwendung
$(document).ready
verwenden SieUnd/oder
Und in Ihr eins und nur
ready
handler, würden Sie so etwas tun:Sie auslösen können, ein anderes benutzerdefiniertes Ereignis zu tun, das setup Zeug dann.
Wenn ich mehrere Funktionen auf Dokument bereit ich kann nicht garantieren, um noch wählen Sie eine Funktion, in der zum auslösen des setup denn ich kann nicht garantieren, dass jeder der bereit Funktionen sind die erste, die aufgerufen werden, indem Sie jQuery
die Reihenfolge der Aufnahme auf der Seite bestimmt.
Ich würde lieber nicht ändern verwenden .bereit, in allen meinen Seiten. Vielleicht bin ich auch nur pingelig. Krank Aussehen, wie es intern arbeitet, und verwenden Sie Ihre Lösung, wenn ich cant hook es direkt, danke.
InformationsquelleAutor Jacob Relkin
$(document).ready()
oder einfach$(function(){})
ist nur ein.addEventListener
Umsetzung (naja nicht genau aber schließen), das heißt, Sie können hinzufügen die Zuhörer vor und nach.Und so weiter, es ist nicht schwer zu sandwich-Funktionen.
Es gibt keine Notwendigkeit zu hacken
.ready()
imo.Hmm, vielleicht sollten Sie aufhören, einfügen .ready() alle über dem Platz. Normalerweise verwende ich nur ein einziges .ready (), wo ich die init-alle meine plugins auf und halten Sie es in einer einzigen Datei mit nichts anderem in es (Wortspiel beabsichtigt). 😉
Wenn ich die Zeit hatte, zu Bearbeiten, die gesamte legacy-Projekt zu arbeiten, wie ich möchte. Zur Zeit bin ich fest mit einer schrittweisen Verbesserung.
InformationsquelleAutor BGerrissen
Ich hatte gerade das exakt gleiche problem. Ich habe eine kleine script auf GitHub fügt hinzu, dass ein $.beforeReady () - Funktion. Lustig 🙂
https://github.com/aim12340/jQuery-Before-Ready
Laden Sie einfach das Skript direkt nach dem jQuery-wie in diesem Beispiel:
InformationsquelleAutor EamonnM