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:我有一个类似的问题,上面的方法解决了这个问题。