为什么总是在循环中使用对对象的最后一个引用
Why always the last reference to the object is used in loop?
assemblyEl
创建正确(1.jpg、2.jpg、3.jpg(,但ajax请求总是发送最后一个id(3(。
为什么会发生这种情况以及如何解决?
var assemblies = [{id:1},{id:2},{id:3}];
for (var a in assemblies) {
var assembly = assemblies[a];
var assemblyEl = $('<img src="' + assembly.id + '.jpg" />')
.click(function () {
$.ajax({
type: "POST",
url: url,
data: { id: assembly.id },
async: false,
success: function (data) {
}
});
});
}
因为点击元素时会触发点击事件。此时,assembly
的值是循环中的最后一个值。
使用闭包将值复制到新作用域。
function clickHandler(assembly) {
return function () {
$.ajax({
type: "POST",
url: url,
data: { id: assembly.id },
async: false,
success: function (data) {
}
});
};
}
.click(clickHandler(assembly));
相关文章:
- 如何查找流星集合中最后一个元素/对象的id
- Parse.com在循环中保存对象,只保存最后一个对象
- ..的Javascript..循环中的对象没有在最后一个属性上运行
- 如何在Javascript中的对象数组的最后一个对象之后附加几个新对象
- 对象绑定模式的rest属性应该是最后一个
- 是否可以获得“”的事件对象;当前“;或“;最后一个“;事件,而不将其作为处理程序中的参数接收
- 获取对象Javascript或jQuery的最后一个值
- Javascript事件处理程序总是被添加到数组中的最后一个对象
- Javascript - 循环访问对象数组,仅显示最后一个对象
- 数组上的挖空子对象具有最后一个项的值
- JavaScript:.push() 将所有存储的值替换为最后一个推送对象的值
- JS将对象推送到变量,将最后一个对象添加到所有元素中
- 如何将另一个 JSON 中的 JSON 对象移动到最后一个位置
- 如何在 JavaScript 中获取对象的第一个、最后一个和其他值
- 数组最后一个单元格中不需要的对象
- 从对象创建的 Javascript 对象总是引用最后一个元素
- 获取对象中的属性数量,然后在for循环中获取最后一个属性
- 主干集合视图仅渲染集合中的最后一个对象
- 如何在Chrome或Firefox的JavaScript控制台中引用最后一个打印出来的对象
- count'最后一个孩子'从javascript对象/数组结构中的任意点