删除包含周围内容的jQuery UI对话框

时间:2012-02-21 09:01:40

标签: jquery-ui jquery

我在加载AJAX的内容中有一些对话框。刷新内容时,应删除对话框;然而,由于jQuery将它们移出DOM中的原始位置,它们仍然存在并开始堆积。

解决这个问题的方法是给这些对话框一个特定的类,并在AJAX代码中明确地销毁它们。然而,这在“道德上”是不正确的。什么是正确的方法?

这是一个演示问题的小提琴: http://jsfiddle.net/6LPcS/

3 个答案:

答案 0 :(得分:0)

你应该致电

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

删除对话框

编辑 - 如果需要,可以将对话框保存在变量中,然后在其上调用destroy

var dialog = $('.yourclass').dialog();

dialog.dialog("destroy");

答案 1 :(得分:0)

为什么不在添加之前检查它们是否存在? 例如,做这样的事情:

var isDialogInitialized  = false
function verifyDialog()
{
   if (!isDialogInitialized)
   {
      //Init the dialog
      //...
      //Some other code

      //Set the flag to true
      isDialogInitialized  = true;
   }
}

请确保每次创建对话框时都调用此函数。这样您就可以确保对话框只初始化一次。

答案 2 :(得分:0)

我真的不认为可以以任何“聪明”的方式做到这一点......为什么你不能在每次刷新内容时手动销毁它?

另请注意,所有对话框都自动分配了类“ui-dialog-content”,您可以使用它来关闭所有打开的对话框:

$('.ui-dialog-content').dialog("destroy");