我有这样的事情:
var a = {
generateDynamicStuff: function(data) {
for(var i=0;i<data.length;i++) {
var dyn_div = document.createElement('div');
dyn_div.className = "dyn_div_"+data[i].name;
dyn_div.textContent = data[i].name;
document.getElementByClassName("dyn_list")[0].appendChild(dyn_div);
$(document).on("click", ".dyn_div_"+data[i].name, function() { alert(i); a.otherFunction(i);});
}
},
otherFunction: function(some_index) {....}
}
这个想法是,我得到了一个名称列表,我将使用这些名称生成可点击的 div 元素。单击其中一个 div 时,其索引将传递给 otherFunction()。
问题是,function() { alert(i); a.otherFunction(i);}
总是给出最后一个索引。也就是说,如果我有 5 个项目,那么i
在匿名函数中总是给我“4”,无论我点击哪个 div。
为什么是这样?