带有加载的jQuery对话框不会自行清理

时间:2014-04-09 18:37:48

标签: javascript jquery dialog

我很确定这是在讨论过的地方,但我似乎无法在任何地方找到它。如果有人能指出我正确的方向,我真的很感激。

我已经设置了一个可以打开和关闭的对话框。我需要在其中加载动态内容,所以我使用它:

$('#dialog').load("somepage.php?document=1");

这个加载正确并且一切工作都很好,除了我关闭对话框然后用一些不同的查询字符串打开它(例如,使用document = 2)这一事实我可以看到仍然有文件内容= 1在DOM中加载。

当Loaded页面中存在javascript函数时,这会导致问题,因为它会被执行两次。 (以及我加载文档的次数,因此它几乎无法使用)。

我尝试清除对话框:

$('#dialog').html("") 

但这并没有多大帮助。

有谁知道什么可以提供帮助?

2 个答案:

答案 0 :(得分:0)

不要只是关闭对话框,而是将其销毁:

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

这应该将对话框清除回其初始状态:

https://api.jqueryui.com/dialog/#method-destroy

答案 1 :(得分:0)

如果您只想加载页面的part,可以随时执行以下操作:假设我只想要一个特定的div

$('#dialog').load("somepage.php?document=1 #myDiv");

此外,我不知道你关闭了#dialog的内容,但是如果它是一个id为myButton的内容,你可以这样做:

$(document).on("click", "#myButton", function(e) {
    // To keep div within DOM and empty
    $("#dialog").empty();
    // To get rid of div (you would have to re-append #dialog every time)
    $("#dialog").remove();
});

所有这一切,.load()实际上并没有从您加载的页面执行任何脚本。如果您使用$.post()$.get(),则可以自行删除<script>代码。

祝你好运!