3

重複の可能性:
$(document).readyの省略形

誰かが私が以下のJSコードを理解するのを手伝ってくれますか?

$(function(){  <-- Is this a JS constructor? Why we need this?
    var someVariable = $(".classa").on('click', function() { <-- At what point in time does someVariable get populated?
        var $this = $(this);
            id = $this.attr('id');
         someVariable.removeClass('selected'); 
    });

    var someVariable2 = $(".classb").on('click', function() {
        var $this = $(this);
            id = $this.attr('id');
         someVariable2.removeClass('selected');
    });
});
4

2 に答える 2

2

$関数の名前です。その中に匿名関数を最初の引数として渡しています。複雑さを軽減すると、次のようになります。

var $ = function( arg1 ){
  /* Internals */
};

これを今呼び出すと、次のようになります。

$("foo");

このコードで"foo"は、が最初の引数です。"foo"ここで、別の関数に置き換えたとします。

var callback = function(){
  alert("Hello World");
};

これを$関数に渡すと、次のようになります。

$( callback );

ただし、実際には名前付き関数を使用する必要はありません。無名関数を使用できます。

$(function(){
  alert("Hello World");
});

類似点を見始めましたか?の寿命のある時点で、$渡した関数を実行するかどうかが決定されます。実行されるまで、関数は何もしません。

ここでjQueryについて話しているので、jQueryはDOMの準備ができるたびにその関数を実行します。したがって、DOMの準備ができたらいつでも実行する必要があるコードを渡します。

于 2012-05-21T22:46:28.810 に答える
0

$はjsコンストラクターではありません。jquery(jsライブラリ)関数です。変数は宣言時に入力されます。

于 2012-05-21T22:48:38.170 に答える