【发布时间】:2012-08-10 22:46:08
【问题描述】:
我正在将延迟的 getJSON 调用添加到 for 循环内的数组中,该数组在其成功函数中引用局部变量。我遇到的问题是,当调用成功函数时,局部变量正在从循环的最后一次迭代中获取值。见下例:
var calls = [];
var arr = ['a','b','c'];
for (var a in arr) {
calls.push(
$.getJSON(window.location, function() { alert(arr[a]); })
);
}
$.when.apply($,calls);
jsFiddle:http://jsfiddle.net/Me5rV/
这会产生三个值为“c”的警报,而我想要值“a”、“b”和“c”。这可能吗?
编辑:以下内容有效,但我不完全确定为什么会有所不同?
var calls = [];
var arr = ['a','b','c'];
for (var a in arr) {
calls.push(
$.getJSON(window.location, function(x) {
alert(x);
}(arr[a]))
);
}
$.when.apply($,calls);
jsFiddle:http://jsfiddle.net/Me5rV/1/
【问题讨论】:
-
似乎是这样,虽然我不完全理解这里的问题,但我使用相同的解决方案让它工作。谢谢。
-
如果其他问题还不够,我想我可以解释一下......秒
标签: jquery getjson jquery-deferred