2

外部スコープにある変数をハンドラーに送信するにはどうすればよいですか?

i = 1;
$(id).change(function() {myHandler(i)});
i = 2;

呼び出されたときのパラメーターは 2 です。

文字列としても試してみましたが、DOM では機能しますが、jQuery では機能しません。

$(id).change('myHandler(' + i + ')');
4

2 に答える 2

8

データオブジェクトを渡したいとします。

var data = {i: 2};
$(id).change(data, myHandler);

myHandler関数内:

function myHandler(event) {
    var i = event.data.i; // <= your data
}

後で変更された場合、値はパラメーターとして渡され、反映されません。

于 2012-07-31T00:41:06.343 に答える
1

i を引数として受け取り、関数を返す関数を呼び出すことで、i の現在の値をトラップするクロージャを作成できます。

function changeHandlerClosure(i) {
    return function() {
        //do stuff here with i
    };
}

i = 1;
$(id).change(changeHandlerClosure(i));
i = 2;

これにより、DOM との対話が回避されます。DOM は、より便利ですが速度が低下する場合があります。

于 2012-07-31T00:51:35.700 に答える