違い

2012-02-22 7 views
28

可能性の重複:
What is the difference between these jQuery ready functions?
jquery: Choosing a document.ready method違い

この

$(function() { 
    $("a").click(function(event){ 
     alert("Thanks for visiting!"); 
    }); 
}); 

と、この

を行うとの違いは何ですか
$(document).ready(function(){ 
    $("a").click(function(event){ 
     alert("Thanks for visiting!"); 
    }); 
}); 
+0

前者はあまり長ったらしいと、あなたがイディオムに慣れたときに、より読みやすいです。それ以外の場合は同じ効果があります。 – tvanfosson

答えて

39

彼らは同じです。 jQuery .ready() docsをチェックしてください。ここではドキュメントからの引用です:

は、次の構文のすべての3つは等価です:

$(ドキュメント).ready(ハンドラ)

$()レディ(ハンドラ)(。これは、あなたがたとの間の機能の違いはありません)

$(ハンドラ)

+12

。私を驚かせることは決してありません。ダウン投票正解とドキュメントからの引用:)もちろん –

9

を推奨されていませんこれらの例は両方ともDOMにバインドされています。

は参考のために、あなたはjQueryのコードを結合することができる2つのポイントがあります。

DOMの準備ができたときに最初に(両方とも同等で)実行される:

$(document).ready(function() { 
    // code 
}); 
$(function() { 
    // code 
}); 

ページは、すべてのイメージのロードを終了したときに、第2が実行する、スタイルシート等

$(window).on("load", function() { 
    // code 
}); 

あなたがイメージのwidth()またはheight()を取得する必要がある場合に、第2便利です。これらのプロパティは、イメージがクライアントシステムに完全にダウンロードされた後にのみ使用できます。

$(window).load(fn);が廃止され、もはや使用すべきではないことに注意してください。

+0

については、結合に加えて、それは時々どのイベントにバインドする必要がないことを初期化コードを覚えておくことが重要です。いくつかは、すぐにそれは、この[記事]につき(http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/)[デイブ・ワード](HTTPで読んだとして実行することができます:// encosia.com/about-daveward/)。 – MarkDBlackwell

7

次の構文のすべての3つは等価です:

$(document).ready(handler) 
$().ready(handler) (this is not recommended) 
$(handler) 

http://api.jquery.com/ready/

+4

それらが同等である場合、なぜそれが推奨されないのですか? – JorgeeFG