Vom jQuery API docs site für ready
alle drei der folgenden Syntaxen sind äquivalent:.
- $ (document) .ready (Handler)
- $() bereit (Handler) (dies wird nicht empfohlen)
- $ (Handler)
Nach Hausaufgaben zu machen - das Lesen und Spielen mit dem source code, habe ich keine Ahnung, warum
$().ready(handler)
nicht empfohlen. Die erste und dritte Wege, sind genau die gleichen, ruft die dritte Option die Ready-Funktion auf einem Cache gespeicherten jQuery-Objekt mit document
:
rootjQuery = jQuery(document);
...
...
// HANDLE: $(function)
// Shortcut for document ready
} else if (jQuery.isFunction(selector)) {
return rootjQuery.ready(selector);
}
Aber die Ready-Funktion hat keine Interaktion mit dem Selektor der ausgewählten Knotenelemente, The ready
Quellcode:
ready: function(fn) {
// Attach the listeners
jQuery.bindReady();
// Add the callback
readyList.add(fn);
return this;
},
Wie Sie sehen können, justs den Rückruf an eine interne Warteschlange hinzufügen (readyList
) und nicht oder die Elemente im Satz verwenden ändern. Auf diese Weise können Sie die Funktion ready
für jedes jQuery-Objekt aufrufen.
Like:
- regelmäßige Selektor:
$('a').ready(handler)
DEMO - Nonsense Selektor:
$('fdhjhjkdafdsjkjriohfjdnfj').ready(handler)
DEMO - undefiniert Selektor:
$().ready(handler)
DEMO
Endlich ... zu meiner Frage: Warum $().ready(handler)
wird nicht empfohlen?
ich, dass '$ (document) nicht bewusst war. ready (handler) 'könnte short-handed zu' $ (handler) 'sein, das ist ganz nett. Gute Frage. – Richard
@ChaosPandion: Für mich scheint es, als ob er versucht, die Werkzeuge zu verstehen, die er benutzt wie seine Westentasche. Ich würde diese verschwendete Anstrengung nicht wirklich nennen. – Jon
Gute Frage. Wenn jemand interessiert ist, [hier ist ein Leistungsvergleich] (http://jsperf.com/jq-ready-event) ... der (zumindest in Chrome) zeigt, dass die "nicht empfohlene" Version tatsächlich am schnellsten ist. –