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 的交互,这有时更方便但速度较慢。

于 2012-07-31T00:51:35.700 回答