将自定义变量传递给匿名jQuery单击功能

时间:2013-09-20 15:31:27

标签: javascript jquery

我想在click事件中传递foreach循环的当前迭代,但它返回“undefined” - 但为什么?

for (var i = 0; i < __ARR_selectors.length; i++) {
    __ARR_selectors[i].click( function(e, i) {
        console.log(i); //returns undefined
}

1 个答案:

答案 0 :(得分:2)

试试这个:

for (var i = 0; i < __ARR_selectors.length; i++) {
    (function (i) {
        __ARR_selectors[i].click( function() {
            console.log(i); //returns undefined
        });
    })(i);
}

代码的问题是变量i会针对循环的每次迭代进行更新,因此click事件会绑定到i的最后一个值。

要解决此问题,请创建一个匿名函数,该函数接受i的参数,该函数可以绕过javascript闭包。