如何在jQuery单击函数中存储局部变量?

Geu*_*uis 11 variables jquery closures loops

我试图弄清楚如何在jQuery的click()事件期间创建的函数中存储外部变量值.这是我正在使用的代码示例.

for(var i=0; i<3; i++){
    $('#tmpid'+i).click(function(){
        var gid = i;
        alert(gid);
    });
}

<div id="tmpid0">1al</div>
<div id="tmpid1">asd</div>
<div id="tmpid2">qwe</div>
Run Code Online (Sandbox Code Playgroud)

所以发生的事情是事件正确附着,但'gid'的值始终是'i'的最后一个递增值.我不确定如何在这种情况下设置私有变量.

Ric*_*ler 23

您可以创建一个闭包并分配i给闭包的局部变量.然后gid将为变量分配i创建闭包时的值,而不是运行函数时的值.

for(var i=0; i<3; i++){
    (function() {
        var gid = i;
        $('#tmpid'+i).click(function(){
            alert(gid);
        });
    })();
}
Run Code Online (Sandbox Code Playgroud)