【发布时间】:2011-02-16 23:48:50
【问题描述】:
以下 jQuery Javascript 代码包含在原本为空的页面中。
var element;
$(function() {
for (var i = 0; i < 10; i++) {
element = $('<div>' + i + '</div>');
element.click(function() {
alert(i);
});
$('body').append(element);
}
});
期望的行为是这段代码应该生成 10 个 div 元素,编号从 0 到 9。当你点击一个 div 元素时,一个警告弹出窗口将显示你点击的 div 元素的编号(即,如果用户点击标记为“4”的 div 元素,警报弹出窗口应显示数字 4)。
无论单击哪个 div 元素,警报弹出窗口都会显示数字 10。
如何修改此代码以使其以所需的方式运行?
【问题讨论】:
-
结果是 10 并且总是 10,因为
i是一个在你的 for 循环中迭代的 var。由于i++,它在循环结束时结束于10。您的问题更多是关于从单击的 div 中提取有用的数字,还是为什么i在将函数传递给事件处理程序时会这样?
标签: javascript jquery pass-by-reference pass-by-value