jquery:如何完全删除closures对话框
当ajax操作失败时,我创build一个带有错误的新div,然后将其显示为对话框。 当对话框closures时,我想彻底销毁并删除div。 我怎样才能做到这一点? 我的代码现在看起来像这样:
$('<div>We failed</div>') .dialog( { title: 'Error', close: function(event, ui) { $(this).destroy().remove(); } });
当我运行这个对话框显示正确,但是当我closures它的对话框仍然可见的HTML(使用FireBug的)。 我在这里错过了什么? 我忘记了什么?
更新:刚才注意到我的代码给我在萤火虫控制台的错误。
$(this).destroy不是一个函数
任何人都可以帮助我?
更新:如果我只是$(this).remove()
而不是从HTML中删除项目。 但是,它完全从DOM中删除? 或者我也需要先调用这个销毁函数呢?
$(this).dialog('destroy').remove()
这将破坏对话框,然后从DOM完全删除“托pipe”对话框的div
你为什么要删除它?
如果要防止创build多个实例,那么只需使用以下方法…
$('#myDialog') .dialog( { title: 'Error', close: function(event, ui) { $(this).dialog('close'); } });
而当错误发生时,你会做…
$('#myDialog').html("Ooops."); $('#myDialog').dialog('open');
$(dialogElement).empty(); $(dialogElement).remove();
这修复了它的真实性
一个丑陋的解决scheme,对我来说就像一个魅力:
$("#mydialog").dialog( open: function(){ $('div.ui-widget-overlay').hide(); $("div.ui-dialog").not(':first').remove(); } });
你可以使用
$(dialogElement).empty(); $(dialogElement).remove();
这对我有效
$('<div>We failed</div>') .dialog( { title: 'Error', close: function(event, ui) { $(this).dialog("close"); $(this).remove(); } });
干杯!
PS:我有一个类似的问题,上面的方法解决了这个问题。