Javascript 将自定义变量传递给匿名jQuery click函数
我想在click事件上传递foreach循环的当前迭代,但它返回“undefined”——但为什么Javascript 将自定义变量传递给匿名jQuery click函数,javascript,jquery,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 } for(变量i=0;i
for (var i = 0; i < __ARR_selectors.length; i++) {
__ARR_selectors[i].click( function(e, i) {
console.log(i); //returns undefined
}
for(变量i=0;i<\u ARR\u选择器.length;i++){
__ARR_选择器[i]。单击(函数(e,i){
console.log(i);//返回未定义的
}
试试这个:
for (var i = 0; i < __ARR_selectors.length; i++) {
(function (i) {
__ARR_selectors[i].click( function() {
console.log(i); //returns undefined
});
})(i);
}
for(变量i=0;i<\u ARR\u选择器.length;i++){
(职能(一){
__ARR_选择器[i]。单击(函数(){
console.log(i);//返回未定义的
});
})(i) );
}
代码的问题是变量i
在循环的每次迭代中都会更新,因此click事件会绑定到i
的最后一个值
要绕过这个问题,请创建一个匿名函数,该函数接受一个参数
i
,该参数绕过javascript闭包。这太愚蠢了。如果iconsole.log()
it's out a click function it in scope-wtf?@Ultra-它不愚蠢-它是设计。尝试在谷歌上搜索有关javascript闭包的文章-当你理解它时,它会更有意义!