如何在循环中为jQuery对话框分配n个按钮?

时间:2013-09-15 17:45:31

标签: javascript jquery

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

1 个答案:

答案 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
    }