0

我想在单击事件上传递 foreach 循环的当前迭代,但它返回“未定义” - 但为什么呢?

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

1 回答 1

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 闭包。

于 2013-09-20T15:33:33.123 回答