複数 - javascript 描画完了 イベント




$(functionなど)でjavascriptコードを開始する (2)

  1. $(document).ready(function(){})は、DOMにアクセスできるように、DOMが実行可能な状態でコードが実行されるようにします。 jQueryのドキュメントでこれについてもっと読むことができます

  2. $(function(){})は#1のエイリアスです。 ここにあるコードは、DOMの準備ができているのを待ちます( ドキュメントを参照 )。

  3. $(function($){})は#1と#2と同じですが、 ローカルスコープの jQueryへのクリーンな参照のみが得られます (下記を参照)。 同じように#1の関数に$を渡すこともできます(jQueryのローカル参照を作成する)。

  4. (function(){}())は単なるself-executing-anonymous-functionであり、新しいクロージャを作成するために使用されます。

これらはいずれもバックボーン固有のものではないことにご注意ください。 最初の3つはjQueryに固有のものですが、#4はちょうどバニラのJavaScriptです。

注意:上記#3で何が起きているのかを理解するために、 $jQueryエイリアスです。 しかし、jQueryは$変数を使用する唯一のライブラリではありません。 $は他の人によって上書きされる可能性があるので、あなたはスコープ内で$が常にjQueryを参照することを保証したいと思います。したがって$引数です。

結局、それは基本的に次の2つのオプションに沸きます:

  1. あなたのJavaScriptがheadにロードされている場合、ドキュメントの準備が整うのを待つ必要があるので、これを使用してください:

    jQuery(function($) {
        // Your code goes here.
        // Use the $ in peace...
    });
    
  2. JavaScriptの最後にJavaScriptをロードすると(閉じたbodyタグの前に、 あなたがしなければならない)、ドキュメントが準備されているのを待つ必要はありません(DOMは、パーサがスクリプト)、 self-executing-anonymous-function (AKA IIFE )で十分です。

    (function($) {
        // Use the $ in peace...
    }(jQuery));
    

PS クローズとスコープの詳細については、 JS101:範囲の簡単なレッスンを参照してください。

私はBackboneとhttp://todomvc.com/からtodoのサンプルアプリケーションを研究しています。ファイルにコードを開始する3つの重大な方法があります。

$(function() {
 // code here
});

$(function( $ ) {
 // code here
});

(function() {
 // code here
}());

私は違いを理解していないと私はもう一方を使用する必要があります。

私はまた、コードを開始するためにこれを使用している人もいました。

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

私が見たことから、これはそれを正しく書く完全な方法ですか?

より一般的な方法では、私はいつも各ファイルのようなものに私のJavaScriptコードを含めるべきですか?

アドバイスありがとうございます。


この二つ:

$(function() {
 // code here
});

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

これらは、ドキュメントがロードされたときにいくつかのjQueryを開始する方法です。 前者は後者のほんの短いバージョンです。

これです:

(function() {
 // code here
}());

ゼロパラメータを持つスコープ付き関数です。すぐにゼロパラメータで呼び出されます。





backbone.js