This question already has answers here:
Javascript infamous Loop issue? [duplicate]
                                
                                    (5个答案)
                                
                        
                5年前关闭。
            
        

我有一堆的div,当单击它们时,我想更新一些与之相关的数据。我在div中注册了click事件,但是我不知道如何将数据与之一起传递到click事件处理程序中。我看了很多其他类似的SO问题,但是还没有找到可行的解决方案。

我希望基本上能够单击一个框并将其传递给数字:

var numbers = ['one', 'two', 'three', 'four'];
var container = document.getElementById('container');

for (var i = 0; i < numbers.length; i++){
    var checkbox = document.createElement('div');
    checkbox.setAttribute('class','checkBtn');

    var save = function(){
        console.log(numbers[i]);
    }
    $(checkbox).click(function(){
        save();
    });
    container.appendChild(checkbox);
}


http://jsfiddle.net/1qrvxe1j/

最佳答案

您必须使用闭包...尝试他的代码。

var numbers = ['one', 'two', 'three', 'four'];
var container = document.getElementById('container');

var save = function (arg1) {
    console.log(arg1);
}

var clickEvent = function (i) {
    return function () {
        save(numbers[i]);
    };
}

for (var i = 0; i < numbers.length; i++){
    var checkbox = document.createElement('div');
    checkbox.setAttribute('class','checkBtn');

    $(checkbox).click(clickEvent(i));

    container.appendChild(checkbox);
}

关于javascript - 使用jQuery click事件发送额外的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25417069/

10-12 02:22