Wann sollte ich die document.ready-Funktion von jQuery verwenden?
Mir gesagt wurde, zu verwenden-Dokument.fertig, als ich anfing zu Javascript/jQuery, aber ich habe nie wirklich verstanden, warum.
Könnte jemand einige grundlegende Richtlinien auf, Wann es Sinn macht zu wickeln javascript/jquery-code von jQuery document.ready
?
Einige Themen bin ich interessiert:
- jQuery
.on()
Methode: ich benutze die.on()
Methode für AJAX ziemlich viel (normalerweise auf dynamisch erzeugten DOM-Elemente). Sollte die.on()
klicken Sie auf Handler immer werden innendocument.ready
? - Leistung: Ist es performant zu halten, werden verschiedene javascript - /jQuery-Objekte innen oder außerhalb Dokument.fertig (oder auch nicht, ist der performance-Unterschied signifikant?)?
- - Objekt-Bereich: AJAX-geladenen Seiten nicht zugreifen können Objekte wurden innen der vorherigen Seite Dokument.bereit, richtig? Sie kann nur auf Objekte zugreifen, die waren außerhalb Dokument.fertig (also, wirklich "Globale" Objekte)?
Update: Zu Folgen, eine best practice, alle meine javascript (jQuery-Bibliothek und meine app ' s code) ist an der unten meiner HTML-Seite und ich bin mit der defer
- Attribut auf die jQuery-mit Skripts auf meine AJAX-geladenen Seiten, so dass ich Zugriff auf die jQuery-Bibliothek auf diesen Seiten.
InformationsquelleAutor der Frage tim peterson | 2012-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
In einfachen Worten,
Angenommen, Sie platzieren Ihre jQuery-code in
head
Abschnitt und versuchen, Zugriff auf einedom
element (Anker img etc), werden Sie nicht in der Lage sein, darauf zuzugreifen, weilhtml
interpretiert von oben bis unten in Ihr html-Elemente sind nicht vorhanden, wenn Sie Ihre jQuery-code ausgeführt wird.Um dieses problem zu überwinden, legen wir jedes jQuery - /javascript-code (mit DOM) in
$(document).ready
Funktion, die aufgerufen wird, wenn alledom
Elemente zugegriffen werden kann.- Und das ist der Grund, wenn Sie Ihre jQuery-code auf der Unterseite (nach alle dom-Elemente, kurz vor
</body>
) , es gibt keine Notwendigkeit für$(document).ready
Gibt es keine Notwendigkeit, um Platz
on
Methode innerhalb$(document).ready
nur, wenn Sieon
Methode aufdocument
wegen dem gleichen Grund habe ich oben erklärt.BEARBEITEN
Kommentare,
$(document).ready
nicht warten, bis Bilder oder Skripte. Das ist der große Unterschied zwischen$(document).ready
und$(document).load
Nur code, der greift auf die DOM sollte in ready-handler. Wenn es ein plugin ist, sollte es nicht in der ready-Ereignis.
InformationsquelleAutor der Antwort Jashwant
Antworten:
Nein, nicht immer. Wenn Sie laden Sie Ihre JS in das Dokument Kopf, die Sie benötigen. Wenn Sie die Elemente nach dem laden der Seite per AJAX, werden Sie brauchen, um. Sie brauchen nicht zu, wenn das Skript unter dem html-element, das Sie hinzufügen einen handler zu.
Kommt es an. Es wird die gleiche Menge an Zeit, um befestigen Sie den Handler, der es gerade hängt, wenn Sie wollen, dass es sofort geschehen, als die Seite geladen wird oder wenn Sie wollen, es zu warten, bis der gesamte doc geladen wird. Es wird also davon abhängen, welche anderen Dinge, die Sie tun auf der Seite.
Es ist im wesentlichen seine eigene Funktion, so dass es nur Zugriff auf vars deklariert eine Globale Reichweite (außen/oben alle Funktionen) oder mit
window.myvarname = '';
InformationsquelleAutor der Antwort Justin
Bevor Sie sicher verwenden jQuery, die Sie benötigen, um sicherzustellen, dass die Seite in einem Zustand, wo es bereitmanipuliert zu werden. Mit jQuery, dies erreichen wir, indem wir unsere code in eine Funktion und übergeben dieser Funktion, um
$(document).ready()
. Die Funktion, die wir passieren kann nur eine anonyme Funktion.Dieser wird die Funktion ausgeführt, die wir passieren .ready() auf, sobald das Dokument fertig ist. Was ist denn hier Los? Wir sind mit $(document) erstellen Sie ein jQuery-Objekt von unserer Seite-Dokument, und rufen dann den .ready () - Funktion auf das Objekt, übergeben Sie der Funktion, die wir ausführen wollen.
Da dies ist etwas, das Sie ' ll findet sich dabei eine Menge, es ist eine Kurzschrift-Methode für diese, wenn Sie bevorzugen — die $ () - Funktion tut doppelte Aufgabe als ein alias für $(document).ready() wenn Sie übergeben Sie eine Funktion:
Dies ist eine gute Lektüre: Jquery-Grundlagen
InformationsquelleAutor der Antwort Tom Sarduy
Hier ist eine Liste von alle jQuery-Methoden
Lesen Sie auf Introducing $(document).ready()
InformationsquelleAutor der Antwort Dipak
Realistisch sein
document.ready
wird nicht benötigt, für nichts anderes, als die Manipulation des DOM genau und es ist nicht immer notwendig oder die beste option. Was ich meine ist, dass, wenn Sie entwickeln eine große jQuery-plugin, zum Beispiel, die Sie kaum verwenden, Sie über den code, da Sie versuchen, halten Sie es TROCKEN, so dass Sie Abstrakt, so viel wie möglich in Methoden, die das DOM manipulieren, aber sind gedacht, um aufgerufen werden, die später auf. Wenn dein code ist fest integriert, die einzige Methode ausgesetzt indocument.ready
ist in der Regelinit
wo die DOM-Magie passiert. Hoffe, das beantwortet Ihre Frage.InformationsquelleAutor der Antwort elclanrs
Sollten Sie binden alle Aktionen im Dokument.fertig, denn Sie sollte warten, bis das Dokument vollständig geladen.
Aber, sollten Sie Funktionen erstellen, die für alle Aktionen und rufen Sie aus dem Dokument.bereit. Wenn Sie Funktionen erstellen (die Globale Objekte), nennen Sie Sie, Wann immer Sie wollen. Also, sobald die neuen Daten geladen, und neue Elemente erstellt haben, rufen Sie diese Funktionen wieder.
Diese Funktionen sind diejenigen, wo Sie haben gebunden die Ereignisse und Aktionen.
InformationsquelleAutor der Antwort Pulkit Mittal
Ich angehängt ein link zu einem div und wollte einige Aufgaben auf die klicken Sie auf. Ich habe den code unter dem angehängten element in den DOM-aber es hat nicht funktioniert. Hier ist der code:
Es hat nicht funktioniert. Dann setzte ich die jQuery-code innerhalb von $(document).bereit und es funktionierte perfekt. Hier ist es.
InformationsquelleAutor der Antwort Safeer Ahmed
er bereit Ereignis tritt ein, wenn das DOM (document object model) geladen wurde.
Da dieses Ereignis tritt auf, nachdem das Dokument fertig ist, ist es ein guter Ort, um alle anderen jQuery-events und-Funktionen. Wie im Beispiel oben.
Die ready () - Methode gibt an, was geschieht, wenn ein Ereignis ready Eintritt.
Tipp: Die ready () - Methode sollte nicht verwendet werden, zusammen mit .
InformationsquelleAutor der Antwort Shrikant Shiledar