请参阅 jsfiddle:http: //jsfiddle.net/LsNCa/2/
function MyFunc() {
for (var i = 0; i < 2; i++) { // i= 0, 1
var myDiv = $('<div>');
myDiv.click(function(e) {
alert(i); // both the two divs alert "2", not 0 and 1 as I expected
});
$('body').append(myDiv);
}
}
var myFunc = new MyFunc();
当我单击它们时,我希望 div 分别警告“0”和“1”,但它们都警告“2”。
当我单击 div 并触发事件时,处理程序如何以及在哪里找到变量的值i
?
我知道添加闭包可以实现我的目标。但为什么?