【发布时间】:2012-01-09 22:49:18
【问题描述】:
下面是一个循环,它创建了六个不同颜色的框。单击框时,变量“颜色”会更改为框的颜色。代码有一个明显的问题,那就是闭包(所有框都获取数组中的最后一个类,并且 boxColors[i] 不能在事件中使用(未定义)。
我怎样才能优雅地解决这个问题?提前致谢。
var boxColors = ['red', 'green', 'blue', 'yellow', 'white', 'black'];
for (var i = 0; i < boxColors.length; i++){
$('<div/>', {
'class': boxColors[i]
}).appendTo(toolboxSection1).click(function(){
color = boxColors[i];
});
}
【问题讨论】:
-
"...所有框都获取数组中的最后一个类..." 你确定吗?每个元素都应该从 Array 中获得一个唯一的类,因此唯一的问题应该是事件处理程序(它可以轻松访问元素的
className属性)。
标签: javascript jquery closures