2012-01-11 1 views
0

をJSのイベントを設定する方法、私は次の構造を参照してください。適切なタイミングで私のレール(まだプロトタイプと3.0.xの、)に付属rails.jsで

(function() { 
// ... 
document.on("click", ... 
})(); 

で達成される正確にどのような匿名関数でのコード全体のラッピング? DOMがロードされるか、ドキュメントオブジェクトだけがロードされるまで、コードを遅延させる有効な方法ですか?

私のプロジェクトでは、現在Event.observe(document, 'dom:loaded', function() { ... }ブロック内に多くのセットアップコードがあります。私がコードをリファクタリングするときに上記のパターンを採用する必要があるかどうか、私は疑問に思っていました。

答えて

2

あなたはmodule patternを見つけました。直ちに呼び出される関数内の変数はローカルであり、グローバル名前空間を汚染しないので便利です。

(function(){ 
    var something = 17; 
    //can use something inside here 
}()); 

//but not here anymore 

機能がすぐに(最終()ビットで)呼び出されるので、timeingに差がないethatない

+0

ありがとうございました。だから私はdom:readyの前にドキュメントオブジェクトを使うことに問題はないと思います。 – Jan

+0

文書を操作することはできますが、準備が整えば問題はありません。要素を作成した後でのみ操作することができます – hugomg

1

自己呼び出す無名関数は何の関係もありませんこれは、すぐ内側にあるものをトリガしますコードを遅らせて

DOMが準備された後でコードブロックを実行させるには、DOMreadyリスナーを用意する必要があります。あなたが言ったコードはEvent.observe(document, 'dom:loaded', function() { ... }だと思います。

+0

もう1つの良い方法は、静的なHTMLコンテンツの後に実行するコードを本文の最後に置くことです。 –

関連する問題