由于某种原因,我得到" 6"在我的函数里面为每个div元素:
for(var i = 1; i <= 5; i++){
$('<div class="e-' + i + '"></div>').appendTo(something).click(function(){
alert(i); // <-- it's 6. wtf??
});
}
而不是1,2,3等
另一方面,该课程似乎正确设置..
我做错了什么?
答案 0 :(得分:11)
您的for
循环正在页面加载时执行。仅当for循环结束后发生单击事件时,警报才会触发。因此i
的值现在为6。
1)页面加载,for
循环做它的东西......
2)稍后会触发点击事件。此时i
的值为6,因为for
循环已经完成。
答案 1 :(得分:5)
问题是你需要创建一个闭包来捕获绑定点击功能时i
的值。
试试这个:
for(var i = 1; i <= 5; i++)
{
$('<div class="e-' + i + '"></div>')
.appendTo(something)
.click(function(value)
{
return function() { alert(value) };
}(i));
}