Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将自定义变量传递给匿名jQuery click函数_Javascript_Jquery - Fatal编程技术网

Javascript 将自定义变量传递给匿名jQuery click函数

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

我想在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<\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闭包。

这太愚蠢了。如果i
console.log()
it's out a click function it in scope-wtf?@Ultra-它不愚蠢-它是设计。尝试在谷歌上搜索有关javascript闭包的文章-当你理解它时,它会更有意义!