This question already has answers here:
Javascript infamous Loop issue? [duplicate]
(5个答案)
5年前关闭。
我有一堆的div,当单击它们时,我想更新一些与之相关的数据。我在div中注册了click事件,但是我不知道如何将数据与之一起传递到click事件处理程序中。我看了很多其他类似的SO问题,但是还没有找到可行的解决方案。
我希望基本上能够单击一个框并将其传递给数字:
http://jsfiddle.net/1qrvxe1j/
(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