外部スコープにある変数をハンドラーに送信するにはどうすればよいですか?
i = 1;
$(id).change(function() {myHandler(i)});
i = 2;
呼び出されたときのパラメーターは 2 です。
文字列としても試してみましたが、DOM では機能しますが、jQuery では機能しません。
$(id).change('myHandler(' + i + ')');
外部スコープにある変数をハンドラーに送信するにはどうすればよいですか?
i = 1;
$(id).change(function() {myHandler(i)});
i = 2;
呼び出されたときのパラメーターは 2 です。
文字列としても試してみましたが、DOM では機能しますが、jQuery では機能しません。
$(id).change('myHandler(' + i + ')');
データオブジェクトを渡したいとします。
var data = {i: 2};
$(id).change(data, myHandler);
myHandler
関数内:
function myHandler(event) {
var i = event.data.i; // <= your data
}
後で変更された場合、値はパラメーターとして渡され、反映されません。
i を引数として受け取り、関数を返す関数を呼び出すことで、i の現在の値をトラップするクロージャを作成できます。
function changeHandlerClosure(i) {
return function() {
//do stuff here with i
};
}
i = 1;
$(id).change(changeHandlerClosure(i));
i = 2;
これにより、DOM との対話が回避されます。DOM は、より便利ですが速度が低下する場合があります。