我的问题是,当我关闭对话框然后再打开另一个时,我应用于加载ajax的JqueryUI对话框的所有JavaScript都不起作用。
我注意到的一些事情是,当我关闭它时,html才会被隐藏,实际上并没有被删除。调用$ dialog.dialog(“destroy”);没有帮助。删除隐藏的html也不会。我不确定如何销毁验证对象(文档没有说明任何内容),或者如果在关闭对话框中这样做甚至会有所帮助。我基本上只想在关闭对话框时返回初始页面加载短语,因此打开另一个将重新创建验证对象等。
我遇到了像TinyMCE这样的其他小部件的问题,一旦我关闭第一个对话框并打开其他小部件,它就不会再次初始化。
以下是我的代码的简化版本 - 一个这样的对话框 -
var create_contact_dialog = function () {
var $contactDialog = $('<div></div>')
.dialog({
autoOpen: false,
dialogClass: "contact_form_dialog",
});
$contactDialog.dialog('open');
return $contactDialog;
};
$('#open_contact_form').live('click', function () {
var $contactDialog = create_contact_dialog();
$contactDialog.load('/contact_form', function () {
contact_form_validator = $("#contact_form").validate({
rules: {
name: {
required: true
},
}
});
});
});
任何指针都表示赞赏!
答案 0 :(得分:1)
关闭后,您需要删除对话框的DOM,因为每次加载的表单都具有相同的确切ID(这导致后续加载仍然引用具有该ID的第一个DOM)。您可以通过提供删除对话框内容的close
函数回调来完成此操作:
var create_contact_dialog = function () {
var $contactDialog = $('<div></div>')
.dialog({
autoOpen: false,
dialogClass: "contact_form_dialog",
close: function() {
$contactDialog.remove();
}
});
$contactDialog.dialog('open');
return $contactDialog;
};
我在这里提供了一个例子,如果您删除关闭功能,您将看到警报不起作用。