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

Pass a parameter to a event handler in jQuery

本文关键字:事件处理 程序 jQuery 参数传递      更新时间:2024-05-29

如何将外部作用域上的变量发送到处理程序?

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