关闭时如何完全删除对话框

当 ajax 操作失败时,我创建一个包含错误的新 div,然后将其显示为一个对话框。当对话框关闭时,我想完全销毁并再次删除 div。我怎么能这么做?我的代码现在看起来是这样的:

$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).destroy().remove();
}
});

当我运行这个对话框时,对话框正确显示,但是当我关闭它时,对话框仍然可以在 html 中看到(使用 FireBug)。我错过了什么?我忘了什么吗?

更新: 刚刚注意到我的代码在 Firebug 控制台中给了我一个错误。

$(this) . delete 不是一个函数

有人能帮我吗?

更新: 如果我只执行 $(this).remove(),则该项将从 html 中删除。但是它完全从 DOM 中移除了吗?或者我需要先调用销毁函数吗?

194815 次浏览
$(this).dialog('destroy').remove()

这将破坏该对话框,然后从 DOM 中完全删除“托管”该对话框的 div

你为什么要移除它?

如果是为了防止创建多个实例,那么只需使用以下方法..。

$('#myDialog')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).dialog('close');
}
});

当错误发生时,你会..。

$('#myDialog').html("Ooops.");
$('#myDialog').dialog('open');

一个对我来说非常有效的丑陋解决方案:

$("#mydialog").dialog(
open: function(){
$('div.ui-widget-overlay').hide();
$("div.ui-dialog").not(':first').remove();
}
});
$(dialogElement).empty();


$(dialogElement).remove();

这个真的能修好它

你可以利用

$(dialogElement).empty();
$(dialogElement).remove();

这招对我很管用

$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).dialog("close");
$(this).remove();
}
});

干杯!

PS: 我遇到了一个类似的问题,上面的方法解决了它。

我在所有的 js 项目中都使用这个函数

你称之为: Hide AndResetModals (“ # IdModalDialog”)

你定义如果:

function hideAndResetModals(modalID)
{
$(modalID).modal('hide');
clearValidation(modalID); //You implement it if you need it. If not, you can remote this line
$(modalID).on('hidden.bs.modal', function ()
{
$(modalID).find('form').trigger('reset');
});
}