Jquery 对话框仅打开一次

2024-04-12

全部- 我知道有人问过这个问题,但以前的解决方案似乎不适用于我的情况。

我有一个简单的表,每行都有许多记录,最后一列是删除超链接。我正在尝试使用对话框弹出并确认删除。如果我使用对话框所在的 div 的显式名称(我将其恰好放置在表格所在的 div 上方一个 div 处),则效果非常好。我首先使用 destroy ,这似乎解决了“只打开一次”的问题,只要我命名对话框 div 即可。我正在尝试通用化代码,因此我宁愿避免显式命名对话框所在的 div,而是引用上一个 div。第一次有效,但随后的点击不起作用:

<code>
   $(".deleteLinkDiag a").livequery('click',function() {

    var myParent = $(this).parents("div:eq(0)"); //container div to be replaced
    var myDiag   = $(myParent).prev("div");     //one div before container div
    var urlLoad = $(this).attr("href");
    $(myDiag).dialog('destroy');
    $(myDiag).dialog({ 
            bgiframe: true,
            resizable: false,
            height:140,
            modal: true,
            autoOpen: false,
            overlay: {
                backgroundColor: '#000',
                opacity: 0.5
            },
            buttons: {
                    "Confirmz":function() 
                    { 
                        myParent.load(urlLoad, function() { });
                        $(this).dialog("close");
                     },
                    Cancel: function() 
                    {  
                        $(this).dialog("close");
                    }
            },
            //close: function(ev, ui) { $(this).dialog('destroy');}
      });
     $(myDiag).dialog('open');
return false;
});
</code>

有任何想法吗?


好的,希望这能对以后的人有所帮助。我实际上遇到了两个问题:

  1. 如果你不销毁dialog(),那么它实际上并不以旧名称存在于DOM中。这就是为什么它在第二次时总是未定义的。
  2. 即使您确实销毁了该对话框,您仍然找不到它。那是因为当对话框理论上将其返回到预初始化状态,这是通过将其放在 DOM 底部的 body 标记之前来实现的。因此,它不再位于“prev”或“prevAll”中。

我通过将对话框的名称设置为与调用 div 相同并附加“Diag”来解决这个问题。然后无论jquery把它放在哪里我都可以跟踪它。呼。

$(".deleteLinkDiag a").livequery('click',function() {
            var urlLoad = $(this).attr("href");
            var myParent = $(this).parents("div:eq(0)"); //container div to be replaced
            var myDiag = myParent.attr('id') + 'Diag';
            $("#" + myDiag).dialog({
                    bgiframe: true,
                            resizable: false,
                            height:140,
                            modal: true,
                            autoOpen: false,
                            overlay: {
                                    backgroundColor: '#000',
                                    opacity: 0.5
                            },
                    buttons: {
                                    "Confirm":function()
                                    {
                                            myParent.load(urlLoad, function() { });
                                            $(this).dialog("close");
                                     },
                                    Cancel: function()
                                    {
                                            $(this).dialog("close");
                                    }
                              },
                    close: function(ev, ui) {
                            $(this).dialog("destroy");
                    }
      });
     $("#" + myDiag).dialog('open');
    return false;
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jquery 对话框仅打开一次 的相关文章

随机推荐