隐藏/重新呈现jQuery对话

时间:2011-08-26 15:26:20

标签: asp.net jquery-ui jquery jquery-dialog

我正在尝试使用AJAX打开jQuery对话框。对话框的内容从查询字符串加载,并包含表单标记内的服务器控件。

我有一个GridView,其中每行中的链接产生对话框。

第一次,对话框加载正常,但随后我需要在页面上打开另一个对话框,然后第一个对话框将加载。我随后无法打开相同的对话框。在Firebug中检查DOM会在页面末尾显示多个“容器”。我有一个GridView,其中一列包含一个链接和一个空div。我已经简化了控件ID,因为它们被ASP.NET破坏了,但这是我的代码:

$('#linkId').click(function() {
    $('#panelId').dialog({
            autoOpen: true,
            height: 600,
            width: 680,
            modal: true,
            show: 'blind',
            hide: 'blind',
            title: 'More Information',
            open: function () {
                $(this).load(url).parent().appendTo("form");
            },
            close(){
                // I've also tried using these (not both at the same time)
                $(this).dialog('destroy').remove();// dialog never opens again
                $(this).dialog('disable').remove();// dialog never opens again
            }
        });
        return false;
    });
});

我已经尝试将包含的函数添加到close事件中,但是我得到了相同的效果。否则,当对话框最终打开时,一切都运行正常(尽管页面末尾有多个对话框容器)。

1 个答案:

答案 0 :(得分:3)

来自jq dialog api documentation

  

“如果要重用对话框,最简单的方法是禁用   “自动打开”选项:$(foo).dialog({autoOpen:false})并打开   它与$(foo).dialog('open')。要关闭它,请使用   $(富).dialog( '关闭')。使用完整演示进行更深入的解释   可在the Nemikor blog

上找到