下面的代码做了一些奇怪的事情。每当您单击对话框中的按钮时,您会看到“test5”作为警报文本,而不是每个按钮的“test0”,“test2”,...“test4”。关于在循环中分配函数的事情是行不通的。
var arrbuttons = [];
for (var i=0; i<5; i++) {
arrbuttons.push({click: function() { alert('test'+i);}, text:'test'+i});
}
jQuery("#requestdialog").dialog(
{
title: "test",
height: 250,
width: 500,
modal: true,
buttons: arrbuttons
}
答案 0 :(得分:2)
所有关于范围和闭包的内容:
var arrbuttons = [];
for (var j=0; j<5; j++) {
(function(i) {
arrbuttons.push({click: function() { alert('test'+i);}, text:'test'+i});
})(j);
}
jQuery("#requestdialog").dialog(
{
title: "test",
height: 250,
width: 500,
modal: true,
buttons: arrbuttons
}