javascript - 你如何在循环中将 n 个按钮分配给 jQuery 对话框?

标签 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
    }

最佳答案

都是关于范围和闭包的:

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
    }

关于javascript - 你如何在循环中将 n 个按钮分配给 jQuery 对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18815487/

相关文章:

jquery - 需要时动态加载/删除 CSS

javascript - 为什么控制台提供完整的 jsFiddle 链接?

javascript - Vuejs 类型错误 : Cannot use 'in' operator to search for

javascript querySelector 不适用于 ':not()' 选项

javascript - 表单容器中的引用为空

javascript - 尝试更改对象属性内的数组值

javascript - 如何为单个元素的 jQuery 组合框设置 minLength

javascript - [React-Native]如何在状态栏之外渲染 View (android和ios)?

javascript - 如何删除 tinyMCE 然后重新添加它?

javascript - 在 jQuery 中使用 * 选择器将 CSS3PIE 与 Modernizr 一起应用