我如何向处理程序发送一个位于外部作用域的变量?
i = 1;
$(id).change(function() {myHandler(i)});
i = 2;
调用时,参数为2。
也尝试作为字符串,在DOM中工作,但在jQuery中不起作用:
$(id).change('myHandler(' + i + ')');
答案 0 :(得分:8)
假设你想传递数据对象,
var data = {i: 2};
$(id).change(data, myHandler);
在myHandler
函数中:
function myHandler(event) {
var i = event.data.i; // <= your data
}
如果稍后修改,该值将作为参数传递,不会被反映。
答案 1 :(得分:1)
通过调用接受i作为参数并返回函数的函数,可以创建一个捕获i的当前值的闭包。
function changeHandlerClosure(i) {
return function() {
//do stuff here with i
};
}
i = 1;
$(id).change(changeHandlerClosure(i));
i = 2;
这避免了与DOM的交互,这有时更方便但更慢。