2011-06-30 10 views
2

私はこのような何かをする考えを持っていた:自己実行機能でjQueryドキュメントを準備する必要がありますか?

(function(window, undefined){ 
    $ = window.jQuery; 
    $(function(){ 
     // Do some stuff 
    });  
})(this); 

あなたがこの良い練習や悪い考えるだろうか? jQuery(document).ready()が起動するときに何らかの影響がありますか?

+2

実際には意味がありません。ライブラリはすでに、 "準備完了"関数の最初の引数として、グローバルjQueryオブジェクトへの参照を渡します。 – Pointy

+0

あなたの例で '$'はグローバルであることは知っていますか?あなたはただの関数を省略することができ、あなたは同じ効果を持ちます。 –

+0

はい、私は$がグローバルであることを知っています。私は実際には準備関数をラップして意見を探していました。しかし、それを指摘してくれてありがとう。 – Cros

答えて

6

の前に DOMの準備ができていて、グローバル名前空間を汚染したくない場合は、javascriptを実行する必要があります。

(function(window, undefined){ 
    var $ = window.jQuery; 

    // create some variables and/or functions that shouldn't be global 
    // ...and do some work before the "ready()" fires 
    var a = 'some value'; 
    function b() { 
     // do some important stuff 
    } 
    var c = b(); 

    // Maybe set up a `.live()` handler, which doesn't rely on DOM ready. 
    $('.someSelector').live(function() { 
     // Some handler code. 
     // This works before DOM is ready. 
    }); 

    $(function(){ 
     // Your DOM ready code 
    });  
})(this); 
3

これは不要です。自己実行可能関数を使用するとスコープが作成され、そのスコープに作成する変数がグローバルにならないようにします。

var a = 'Hi'; 
alert(window.a); // "Hi" 

(function() { 
    var a = 'Hi'; 
})(); 
alert(window.a); // "undefined" 

jQueryの場合は必要ありません。準備関数は既にスコープを作成します。

関連する問題