Wenn ich meine jQuery-Skripte unter den gesamten HTML-Code meiner Seite lade, muss ich noch auf $(document).ready
warten, um mit jQuery Elemente auf der Seite finden zu können?
Antwort
Sie tun nicht müssen jQuery ready
Funktion verwenden, aber Ihr Code müsste in diesem Sinne geschrieben werden. Beliebige click
oder andere bindbasierte Handler können nicht korrekt an Selektoren angeschlossen werden, andere wie live
und $.ajax
können jedoch wie vorgesehen funktionieren.
Seien Sie vorsichtig, wenn Sie mit diesem Ansatz Skriptlader oder AMD verwenden. jQuery muss verfügbar sein und Sie müssen beim Laden blockieren. Laden Sie jQuery und andere Deps in den Kopf.
Ein großer Blick auf dieser Technik, die beschreibt, dass dies nicht notwendig ist für jQuery-Funktion (nicht unbedingt über den Einsatz in der Fußzeile) zu verwenden:
http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/
Warum würde 'Klick' (oder Selektoren) nicht funktionieren? –
(Dieser Link bezieht sich auf die Verwendung von Skripten in einer HEAD-Position, aber nicht in einer FOOT-Position.) –
Es würde für alles, was im DOM vor der Ausführung verfügbar ist, funktionieren. Alles, was danach geladen wird, mit irgendwelchen Mitteln, wie Ajax oder hinzugefügt in einem nachfolgenden Dokumentwechsel, würde nicht durch jQuerys "Klick" aufgenommen werden. – philwinkle
Nein, Sie brauchen nicht $(document).ready
für jeden Code, der mit DOM-Elementen auf der Seite interagiert, wenn die Skripts unter diesen Elementen platziert werden.
Es ist gute Praxis, sie vor dem schließenden -Tag zu setzen.
Das HTML-Tag hat nur zwei gültige Kinder, Kopf und Körper, also würde ich wahrscheinlich sagen, dass es mehr als eine gute Übung ist, Ihre Script-Tags innerhalb des schließenden Body-Tags zu platzieren. Parsers können mit ungültigem HTML komisch sein – Hazza
Nein, weil das Dokument bereits geladen worden wäre. Der Dom lädt von oben nach unten. Ich persönlich möchte alle meine js am Ende der Seite anstatt in den Kopf legen.
aber es ist nur 1 Zeile Code und ich würde vorschlagen, es nur um sicher zu sein. Sie können es auch noch kürzer machen. $(function() {}
ist das gleiche wie $(document).ready(function(){})
Ich verstehe nicht, warum Sie es nur benutzen sollten, um sicher zu sein; es klingt, als würde es die Ausführung unnötig verlangsamen. –
weil es immer jemanden mit einer Browserkonfiguration geben wird, die fehlschlägt, wenn sie nicht sieht, was sie will oder erwartet. running '$ (function() {}' einmal verlangsamt die Dinge nicht genug, um Sie zu kümmern. Sehen Sie sich http://StackOverflow.com/Questions/8160014/Document-Ready-Check-Slows-Down-ie und lesen Die Kommentare für die angenommene Antwort, die Benutzung von '$ (function() {}' dauert durchschnittlich etwa 2-3ms. Nebenbei bemerkt, wenn Sie PHP verwenden, können Sie eine Funktion oder Klasse erstellen, um alle js in eine Datei zu schreiben in 1 '$ (function() {}' oder Sie können es in js tun, um in Entwurfsmuster zu programmieren. – Yamiko
- 1. Feuer $ (document) .ready nach AJAX Seite
- 2. jQuery $ (document) .ready() nicht nach window.location.href Brennen
- 3. JQuery $ (document) .ready ajax load
- 4. zweite $ (document) .ready Ereignis jQuery
- 5. Wird $ (document) .ready() ausgelöst, wenn der Code, der überprüft wird, nach dem Ereignis eingefügt wurde?
- 6. $ (document) .ready() feuern, bevor die partielle Ansicht geladen wird
- 7. onYouTubeIframeAPIReady innerhalb jQuery (document) .ready
- 8. $ (document) .ready (function() VS $ (function() {
- 9. Problem, wenn ich legen Sie Javascript in $ (document) .ready
- 10. JQuery $ (document) .ready() und document.write()
- 11. history.back(); löst $ (document) .ready() nicht aus;
- 12. Wie können $ (document) .ready() Funktionen global verfügbar gemacht werden?
- 13. JavaScript-Funktionen innerhalb (document) .ready() nicht
- 14. Wie bald wird jQuery (document) .ready aufgerufen?
- 15. Wie eine Funktion innerhalb $ (document) nennen .ready
- 16. Wie erreiche ich $ (document) .ready type Verhalten für AJAX-Inhalte?
- 17. Warum geht dieses Javascript-Objekt nach $ (document) .ready nicht aus dem Geltungsbereich?
- 18. $ (document) .ready funktioniert nicht unter MVC4 Projekt
- 19. Firefox wird nicht ausgelöst $ (document) .ready (function() {
- 20. Wie wickeln wir mein Skript in einer $ (document) .ready (function() {
- 21. hinzufügen KO „data-bind“ -Attribut auf $ (document) .ready
- 22. $ (document) .ready (Wie man .ready beim Laden der Seite stoppt und stattdessen .ready nur erlaubt, wenn ein HTML-Link geklickt wird)
- 23. jquery verstecktes Feld nicht zugänglich, bis $ (document) .ready() aufgerufen
- 24. Typo3: jQuery $ (Dokument) .ready() nicht aufgerufen, aber Skripte geladen
- 25. In jQuery, entspricht $ (func) $ (document) .ready (func)? Ist
- 26. Best Practices für die Platzierung der Document Ready-Funktion
- 27. Rails 5: wie man $ (document) .ready() mit Turbo-Links verwendet
- 28. Timepicker werden nicht nach dem Klick Ändern
- 29. jquery change-Ereignis gibt null zurück, wenn manuell auf $ (document) .ready();
- 30. Update, wenn MathML geladen wird
"Technisch", ja - "praktisch", nein. Dies ist seit Jahren konsistentes (nicht definiertes) Verhalten für Browser. Allerdings glaube ich, dass es etwas Magie mit "fertig" und Frames im IE geben könnte ... das Skript sollte immer noch * innerhalb * des Body-Tags sein. –
Bedeutet "Fußzeile" auch "
Am Ende des '
' –