我在加载AJAX的内容中有一些对话框。刷新内容时,应删除对话框;然而,由于jQuery将它们移出DOM中的原始位置,它们仍然存在并开始堆积。
解决这个问题的方法是给这些对话框一个特定的类,并在AJAX代码中明确地销毁它们。然而,这在“道德上”是不正确的。什么是正确的方法?
这是一个演示问题的小提琴: http://jsfiddle.net/6LPcS/
答案 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");