我想在click事件中传递foreach循环的当前迭代,但它返回“undefined” - 但为什么?
for (var i = 0; i < __ARR_selectors.length; i++) {
__ARR_selectors[i].click( function(e, i) {
console.log(i); //returns undefined
}
答案 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闭包。