以下からのjQuery APIドキュメントサイトについてready
次の3つの構文はすべて同等です。
- $(document).ready(handler)
- $()。ready(handler)(これは推奨されません)
- $(ハンドラ)
宿題- ソースコードを読んで遊んだ後、なぜなのかわからない
$().ready(handler)
推奨されません。1番目と3番目の方法はまったく同じです。3番目のオプションは、キャッシュされたjQueryオブジェクトのready関数を次のように呼び出しますdocument
。
rootjQuery = jQuery(document);
...
...
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
しかし、ready関数は、選択したノード要素のセレクターと相互作用しません。ready
ソースコード:
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// Add the callback
readyList.add( fn );
return this;
},
ご覧のとおり、コールバックを内部キュー(readyList
)に追加するだけで、セット内の要素を変更したり使用したりすることはありません。これによりready
、すべてのjQueryオブジェクトで関数を呼び出すことができます。
お気に入り:
- 通常のセレクター:
$('a').ready(handler)
デモ - ナンセンスセレクター:
$('fdhjhjkdafdsjkjriohfjdnfj').ready(handler)
デモ - 未定義のセレクター:
$().ready(handler)
デモ
最後に...私の質問に:なぜ$().ready(handler)
推奨されないのですか?