45

ready() メソッドのいくつかのショートカットを見たことがありますが、テスト結果が混乱するので、実際に最初に何が起こるか知りたいです..

$(document).ready(function(){
    alert("document ready");
});

$(window).load(function(){
    alert("window ready");
});

(function($){
    alert("self invoke");
})(jQuery);

ここでは、自己呼び出しが最初に発生し、次にドキュメント、次にウィンドウが発生します。自己呼び出し手法は ready() メソッドと見なされます?

4

3 に答える 3

102

3番目のオプションは.ready()(または実際にはjQueryに関連する)ショートカットではありません。自己呼び出しはすぐに(コードに表示されるとすぐに)実行されますが、これはおそらくあなたが考えているショートカットです:

$(function(){
  alert("I'm a ready shortcut");
});

への関数の受け渡し$(func)は、 のショートカットです$(document).ready(func);競合のないバージョンは次のようになります。

jQuery(function($) {
  //$ is jQuery
});
于 2010-10-11T15:16:48.643 に答える
13

Nick Craver の言うことは正しいですが、最後の例では、実際には jquery で何もしていないことに注意する価値があると思います。jQuery はパラメーターとして匿名関数に渡されていますが、関数はそれに対して何もしていません。

最後の例は、即時呼び出し関数式 (IIFE) と同等です。

(function(){
    alert("self invoke");
})();

そして明らかに、これは、そのコード行がヒットするとすぐに無名関数を呼び出して、アラートを実行しているだけです。jQuery をまったく呼び出していないため、Nick は、それが ready() メソッドではないことは間違いないと言っています。

于 2010-10-11T15:21:57.227 に答える
6

この記事には、最初の 2 つの違いがよく説明されています。

$(document).ready対。$(window).load

jQuery は、コードを実行し、イベント ハンドラーをアタッチするための 2 つの強力なメソッドを提供します:$(document).ready$(window).load. すべてのグラフィックスがまだロードされていなくても、HTML ドキュメントがロードされ、DOM の準備が整った時点で、ドキュメントの準備完了イベントがすでに実行されます。ウィンドウが読み込まれる前に特定の要素のイベントをフックする場合 $(document).readyは、適切な場所です。

$(document).ready(function() {
  // executes when HTML-Document is loaded and DOM is ready
  alert("document is ready");
});

ウィンドウ読み込みイベントは、すべてのフレーム、オブジェクト、および画像を含む完全なページが完全に読み込まれる少し後に実行されます。したがって、画像やその他のページ コンテンツに関係する関数は、ウィンドウの load イベントまたは content タグ自体に配置する必要があります。

$(window).load(function() {
  // executes when complete page is fully loaded, 
  // including all frames, objects and images
  alert("window is loaded");
});
于 2010-10-11T15:27:26.327 に答える