如何在关闭时删除所有jQuery UI对话框

时间:2011-12-08 15:15:34

标签: jquery jquery-ui

在我的主页上,我有一种可以打开和关闭的侧面板。侧面板通过jQuery的加载功能加载到主页面上的div中。

加载到此侧面板的部分内容是div(myDialog)

当点击此侧面板上的按钮时,我打电话:

$("#myDialog").dialog({
  title : "Permission",
  width : 300,
  height : 200,
  modal : true
});

现在,如果我关闭侧面板并使用jQuery的空函数清除其内容。然后我选择all和'view source'jQuery在身体底部添加的html仍然存在。当我重新打开侧面板并尝试打开相同的对话框时,这会导致问题,因为有两个div(具有重复的ID)。

我尝试添加此功能但不起作用:

close : function(){
    $("#myDialog").dialog("destroy");
}

如何清除jQuery添加到正文底部的html?或者有更好的方法来做我想做的事情吗?

5 个答案:

答案 0 :(得分:4)

请完整查看相同的帖子jquery: How to completely remove a dialog on close

$(this).dialog('destroy').remove()

答案 1 :(得分:3)

jQueryUI实际上在创建对话框时将div移动到DOM中的其他位置,从而将其从原始容器中移出。因此,如果您尝试在其原始容器上调用empty(),则无效。

您应该在侧面板关闭时删除对话框div,而不是在对话框关闭时删除(如果对话框从未打开过,该怎么办)。

答案 2 :(得分:1)

您也必须将其从DOM中删除。请在close事件中尝试此操作:

$('#myDialog').dialog("destroy").remove();

答案 3 :(得分:1)

当你关闭对话框然后它只关闭框但内容不会清除..如果你使用

$(this).dialog('destroy').remove()

方法然后它将从DOM中删除对话框,因此您必须自己清除所有内容..或者当您重新打开对话框时,您必须清除所有数据

这就是......试试......

答案 4 :(得分:0)

$("#myDialog").dialog("close")不起作用吗?

也应该$('#myDialog').dialog("destroy").remove()

说不清楚为什么不使用Class而不是ID。重复这种方式并不重要。