0

我正在尝试将按钮动态添加到对话框中,所以我使用了下面的脚本。

$("a", that.element).each(function () {
                if ($(this).hasClass("hide")) {
                    target = this;
                    //Adds the new button to the existing list of buttons.
                    buttons.push({ text: this.text, click: function () { that._addClass(menu, target); } });
                    //Gives the new list of buttons to the dialog to display.
                    menu.dialog("option", "buttons", buttons);
                }
            });

因此,添加了按钮,问题出在单击事件上,或者我单击的任何按钮都击中了该功能,但目标保持不变,因为最后一个按钮锚(意味着当我在循环中使用锚创建按钮时它一直在缓存并传递给我最后的迭代值)。

另一个问题是我在页面某处有另一个对话框,即使该对话框正在显示这些按钮......

请任何解决这些问题的方法......

4

2 回答 2

0

只需在目标变量中添加一个 var 即可。另请参阅http://jsfiddle.net/xf77k/我做了一个简单的例子,因为我没有你正在使用的所有周围代码。thatmenubuttons不见了。

$("a", that.element).each(function () {
    if ($(this).hasClass("hide")) {
            var target = this;
            //Adds the new button to the existing list of buttons.
            buttons.push({ text: target.text, click: function () { that._addClass(menu, target); } });
            //Gives the new list of buttons to the dialog to display.
            menu.dialog("option", "buttons", buttons);
    }
});
于 2013-06-11T06:41:09.953 回答
0

Another issue is that I had another dialog somewhere in the page, even that dialog is displaying these buttons...

对于这一部分,检查您传递给函数的类或 Id。另一个 div 也可能包含这些类。

于 2013-06-11T06:36:38.653 回答