如何在jquery中传递'constant'参数

Tom*_*Tom 1 javascript jquery for-loop

我将以下内容附加到div元素,该元素检测用户何时右键单击div并调用该函数theFunction.

$('#box_'+i).bind('mousedown',function(e){if(e.which==3)theFunction(e,i)});
Run Code Online (Sandbox Code Playgroud)

代码在循环内运行(其中i增加的变量),因为有多个div需要页面上的右键单击功能.但是,当theFunction调用它时,它总是传递最后一个值i而不是bind()完成时的值.有没有办法让它保持不变,所以i当循环运行时它不会改变前面的div?

Jos*_*ber 5

您必须i在循环内捕获局部作用域中的值:

// Start your loop
(function(i){
    $('#box_'+i).bind('mousedown', function(e){
        if (e.which==3) theFunction(e,i)
    });
})(i);
// end your loop
Run Code Online (Sandbox Code Playgroud)