考虑的JavaScript的这个小片断:如何解决Javascript关闭问题?
for(var i in map.maps)
{
buttons.push($("<button>").html(i).click(function() { alert(i); }));
}
它创建用于每个在map.maps
对象中的字段中的一个按钮(这是一个ASSOC数组)。我将索引设置为按钮的文本,并将其设置为提醒索引。很显然,人们会希望所有按钮在单击时都会提醒它自己的文本,但是当单击时,所有按钮都会提醒map.maps
对象中最终索引的文本。
我认为这种行为是由整洁的方式引起的,JavaScript处理关闭,返回并从创建它们的闭包执行函数。
我可以想象得到解决这个问题的唯一方法是将索引设置为按钮对象上的数据,并从点击回调中使用它。我也可以模仿我的buttons
对象中的map.maps
索引,并使用indexOf
找到正确的点击索引,但我更喜欢前一种方法。
我在寻找的答案是确认,我正在做它正确的方式,或建议如何我应做到这一点。
[我如何将JS变量的值(不是引用)传递给函数]几乎完全重复?(http://stackoverflow.com/questions/2568966/how-do-i-pass-the -value-not-the-reference-of-js-variable-to-a-function) – 2011-06-06 09:04:35