1

下面的代码做了一些奇怪的事情。每当您单击对话框中的按钮时,您会看到“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
    }
4

1 回答 1

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
    }
于 2013-09-15T17:49:10.373 回答