Javascript" for循环"变量指针

时间:2013-02-19 14:14:33

标签: javascript

我确信我还没有足够的咖啡看清楚,这看起来微不足道,但是,我有一个for循环,它传递了jQuery插件中的一些函数。 var i被传递,当然,传递i的最后一个值,而不是传递时分配的值。

for (var i = 1; i < 3 + 1; i++) {
    $('#div' + i).plugin({ // i returns correctly here
    onDelete: function () {
            alert("Deleting #" + i); // i returns 4 every time - last value of i
        }
    });
}

我如何“复制”i,所以按照我的预期返回?我有一个解决方法,但我很想知道,所以我可以把头放在沙子里。

1 个答案:

答案 0 :(得分:6)

这是众所周知的循环问题。每次都必须将它包装在一个闭包中:

for (var i = 1; i < 4; i++)(function(i) {
    $('#div' + i).plugin({
        onDelete: function() {
            alert("Deleting #" + i);
        }
    });
})(i);

或者你可以使用它:

for (var i = 1; i < 4; i++) {
    $('#div' + i).plugin({
        onDelete: callback(i)
    });
};

function callback(i) {
    return function() {
        alert("Deleting #" + i);
    };
}