【发布时间】:2012-03-20 21:09:47
【问题描述】:
我的 jquery UI 对话框在其自身之上多次加载时遇到问题:
click -> opens dialog(1 time) -> close dialog
click - > opens dialog(2 times) -> close dialog
click - > opens dialog(4 times) -> close dialog
click - > opens dialog(8 times) -> close dialog
正是这里描述的内容:Why does my modal jQuery dialog open multiple times?
我遵循的解决方案对那个人有效,但对我无效。对那个人有效的解决方案是:
1) 在函数外初始化对话框 2) 仅在 load() 成功回调时打开
如您所见,我在下面的代码中做了这两件事,但问题仍然存在。请帮忙: (顺便说一句,一般结构是我在单击链接时加载一个对话框。然后当单击该对话框中的注册按钮时,我在其顶部加载另一个小的确认对话框,并带有一个关闭两个对话框的 OK 按钮。)
$(document).ready(){
var $registerDialogHandle = null;
var $registerStatusDialogHandle = null;
$registerDialogHandle = $('<div></div>').html("").dialog({
autoOpen: false, modal: true, width: 470, height: 552,
buttons: {
"Register": function () {
if ($('#registerForm').validate().form()) {
$.ajax({
...ajax settings...
success: function () {
openInDialog($registerStatusDialogHandle, "/Account/RegisterStatus");
}
});
}
}
}
});
$registerStatusDialogHandle = $('<div></div>').html("").dialog({
autoOpen: false, modal: true, width: 365, height: 165,
buttons: {
"OK": function () {
$(this).dialog("close");
$registerDialogHandle.dialog("close");
}
}
});
$('.registerLink').live("click", function () {
openInDialog($registerDialogHandle, "/Account/Register?path=_RegisterPartial");
});
} /*End of document.ready()*/
function openInDialog(dialog, target) {
var $url = target;
var $dialog = dialog;
$dialog.empty();
$dialog.dialog("option", "position", "center").load($url, function () {
$dialog.dialog("open");
});
}
【问题讨论】:
-
由于您没有重新创建对话框,因此您不需要删除它们。这段代码是否在多次运行的其他函数中?
-
好的,我删除了 remove() 调用。不,它不在任何其他功能内。一切都直接在 $(document).ready 除了直接在它之外的 openInDialog 函数之外。我下载了一个与 js 括号匹配的 Visual Studio 扩展。
标签: jquery user-interface dialog load