Mir wurde gesagt, ich solle document verwenden. Schon als ich anfing, Javascript / jQuery zu verwenden, habe ich nie wirklich gelernt, warum.
Könnte jemand einige grundlegende Richtlinien geben, wann es sinnvoll ist, Javascript / JQuery-Code in jQuery's zu verpacken document.ready
?
Einige Themen, die mich interessieren:
- jQuerys
.on()
Methode: Ich verwende die.on()
Methode für AJAX ziemlich oft (normalerweise für dynamisch erstellte DOM-Elemente). Sollte der.on()
Klick - Handler immer seine innendocument.ready
? - Leistung: Ist es leistungsfähiger, verschiedene Javascript / jQuery-Objekte innerhalb oder außerhalb des Dokuments bereit zu halten (ist auch der Leistungsunterschied signifikant?)?
- Objektbereich: AJAX-geladene Seiten können nicht auf Objekte zugreifen, die sich im Dokument der vorherigen Seite befanden. Bereits richtig? Sie können nur auf Objekte zugreifen, die sich außerhalb von document.ready befanden (dh wirklich "globale" Objekte)?
Update: Um einer bewährten Methode zu folgen, befindet sich mein gesamtes Javascript (die jQuery-Bibliothek und der Code meiner App) am Ende meiner HTML-Seite und ich verwende das defer
Attribut für die jQuery-haltigen Skripte auf meinen AJAX-geladenen Seiten, damit ich kann auf diesen Seiten auf die jQuery-Bibliothek zugreifen.
javascript
jquery
dom
event-handling
document-ready
tim peterson
quelle
quelle
Antworten:
In einfachen Worten,
Angenommen, Sie haben Ihren jQuery-Code in einen
head
Abschnitt eingefügt und versucht, auf eindom
Element (einen Anker, ein Bild usw.) zuzugreifen. Sie können nicht darauf zugreifen, da erhtml
von oben nach unten interpretiert wird und Ihre HTML-Elemente nicht vorhanden sind, wenn Ihr jQuery-Code vorhanden ist läuft.Um dieses Problem zu lösen, platzieren wir jeden jQuery / Javascript-Code (der DOM verwendet) in der
$(document).ready
Funktion, die aufgerufen wird, wenn auf alledom
Elemente zugegriffen werden kann.Und aus diesem Grund ist es nicht erforderlich , wenn Sie Ihren jQuery-Code unten platzieren (nach allen dom-Elementen kurz zuvor
</body>
)$(document).ready
Es ist nicht erforderlich, die
on
Methode$(document).ready
nur dann zu platzieren , wenn Sie dieon
Methodedocument
aus demselben Grund verwenden, den ich oben erläutert habe.BEARBEITEN
Aus Kommentaren,
$(document).ready
wartet nicht auf Bilder oder Skripte. Das ist der große Unterschied zwischen$(document).ready
und$(document).load
Nur Code, der auf das DOM zugreift, sollte im Ready-Handler sein. Wenn es sich um ein Plugin handelt, sollte es nicht bereit sein.
quelle
$(document).ready
. Sehen Sie dieshead
und Sie Skripte sind, nachdem die Elemente bearbeitet wurden,document.ready
wird dies nicht benötigt. Bilder sind jedoch ein Sonderfall ...jQuery
Code in den Ready-Handler ein. Nur Code, der auf das DOM zugreift. Wenn es ein Plugin ist, sollte es nicht in derready
Veranstaltung seinAntworten:
Nein nicht immer. Wenn Sie Ihr JS in den Dokumentenkopf laden, müssen Sie. Wenn Sie die Elemente erstellen, nachdem die Seite über AJAX geladen wurde, müssen Sie dies tun. Wenn sich das Skript unter dem HTML-Element befindet, müssen Sie auch keinen Handler hinzufügen.
Es hängt davon ab, ob. Das Anhängen der Handler dauert genauso lange. Es hängt nur davon ab, ob dies beim Laden der Seite sofort geschehen soll oder ob gewartet werden soll, bis das gesamte Dokument geladen ist. Es hängt also davon ab, welche anderen Dinge Sie auf der Seite tun.
Es handelt sich im Wesentlichen um eine eigene Funktion, sodass nur auf Variablen zugegriffen werden kann, die in einem globalen Bereich (außerhalb / vor allem Funktionen) oder mit deklariert wurden
window.myvarname = '';
quelle
Bevor Sie jQuery sicher verwenden können, müssen Sie sicherstellen, dass sich die Seite in einem Zustand befindet, in dem sie bearbeitet werden kann. Mit jQuery erreichen wir dies, indem wir unseren Code in eine Funktion einfügen und diese Funktion dann an übergeben
$(document).ready()
. Die Funktion, die wir übergeben, kann nur eine anonyme Funktion sein .Dadurch wird die Funktion ausgeführt, die wir an .ready () übergeben, sobald das Dokument fertig ist. Was ist denn hier los? Wir verwenden $ (document), um ein jQuery-Objekt aus dem Dokument unserer Seite zu erstellen, und rufen dann die Funktion .ready () für dieses Objekt auf und übergeben ihm die Funktion, die wir ausführen möchten.
Da dies etwas ist, das Sie häufig tun, gibt es eine Kurzmethode dafür, wenn Sie es vorziehen - die Funktion $ () erfüllt die doppelte Aufgabe als Alias für $ (document) .ready (), wenn Sie ihr eine Funktion übergeben:
Dies ist eine gute Lektüre: Jquery Fundamentals
quelle
(function($){ })(jQuery);
was Ihren Code so umschließt, dass $ jQuery in diesem Abschluss ist.ready () - Geben Sie eine Funktion an, die ausgeführt werden soll, wenn das DOM vollständig geladen ist.
Hier ist eine Liste aller jQuery-Methoden
Lesen Sie weiter Einführung in $ (document) .ready ()
quelle
Um realistisch zu sein,
document.ready
wird nichts anderes benötigt, als das DOM genau zu manipulieren, und es wird nicht immer benötigt oder ist die beste Option. Ich meine, wenn Sie beispielsweise ein großes jQuery-Plugin entwickeln, verwenden Sie es kaum im gesamten Code, weil Sie versuchen, es trocken zu halten. Sie abstrahieren also so viel wie möglich in Methoden, die das DOM manipulieren, aber aufgerufen werden sollen später. Wenn Ihr gesamter Code eng integriert ist, ist die einzige Methode, die verfügbar gemacht wird,document.ready
normalerweise die,init
in der die gesamte DOM-Magie stattfindet. Hoffe das beantwortet deine Frage.quelle
Sie sollten alle Aktionen in document.ready binden, da Sie warten sollten, bis das Dokument vollständig geladen ist.
Sie sollten jedoch Funktionen für alle Aktionen erstellen und diese aus dem document.ready heraus aufrufen. Wenn Sie Funktionen (Ihre globalen Objekte) erstellen, rufen Sie diese auf, wann immer Sie möchten. Rufen Sie diese Funktionen erneut auf, sobald Ihre neuen Daten geladen und neue Elemente erstellt wurden.
In diesen Funktionen haben Sie die Ereignisse und Aktionselemente gebunden.
quelle
Ich habe einen Link zu einem Div angehängt und wollte einige Aufgaben mit dem Klick erledigen. Ich habe den Code unter dem angehängten Element im DOM hinzugefügt, aber es hat nicht funktioniert. Hier ist der Code:
Es hat nicht funktioniert. Dann habe ich den jQuery-Code in $ (document) .ready eingefügt und es hat perfekt funktioniert. Hier ist es.
quelle
Das Bereitschaftsereignis tritt auf, wenn das DOM (Dokumentobjektmodell) geladen wurde.
Da dieses Ereignis auftritt, nachdem das Dokument fertig ist, ist es ein guter Ort, um alle anderen jQuery-Ereignisse und -Funktionen zu haben. Wie im obigen Beispiel.
Die ready () -Methode gibt an, was passiert, wenn ein ready-Ereignis auftritt.
Tipp: Die ready () -Methode sollte nicht zusammen mit verwendet werden.
quelle