将参数传递给jQuery中的事件处理程序

时间:2012-07-31 00:33:51

标签: javascript jquery parameters

我如何向处理程序发送一个位于外部作用域的变量?

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

调用时,参数为2。

也尝试作为字符串,在DOM中工作,但在jQuery中不起作用:

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

2 个答案:

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