0

クリックイベントで foreach ループの現在の反復を渡したいのですが、「未定義」が返されますが、なぜですか?

for (var i = 0; i < __ARR_selectors.length; i++) {
    __ARR_selectors[i].click( function(e, i) {
        console.log(i); //returns undefined
}
4

1 に答える 1

2

これを試して:

for (var i = 0; i < __ARR_selectors.length; i++) {
    (function (i) {
        __ARR_selectors[i].click( function() {
            console.log(i); //returns undefined
        });
    })(i);
}

コードの問題はi、ループの反復ごとに変数が更新されるため、クリックイベントが最後の値にバインドされることiです。

iこの問題を回避するには、 javascript クロージャーを回避するパラメーターを受け入れる匿名関数を作成します。

于 2013-09-20T15:33:33.123 に答える