【发布时间】:2011-07-29 06:10:36
【问题描述】:
谁能告诉我我在这里做错了什么?我在下面对其进行了简化,但我基本上是在尝试创建一个列表并有一个单击事件来引用仅在循环中可用的变量。
for (var i = 0; i < data.length; i++) {
$newRow = $(rowFormat);
$('a:first', $newRow).click(function(i){
return function() { alert(i); }
});
$list.append($newRow);
}
【问题讨论】:
-
你做的“错误”的事情叫做闭包。您为每个 click 函数提供了对同一变量
i的引用。 -
@ITroubs:他清楚地知道这一点并试图解决它(事实上,他没有给他们中的 任何 引用
i在循环;他将它隐藏在 [外部] 匿名函数的参数列表中)。他只是忘记了一些括号——见大卫的回答。 :-) -
是的,你是对的。没有正确阅读代码;-)
-
是的,变量名选择错误...
标签: javascript jquery closures