这是一次又一次出现的问题之一,所以我知道(我认为)最常见的陷阱。
情景:
以下是呈现对话框的相关代码:
dev_mode_on.js
正如您所看到的,对话框已初始化,但在单击$('#dialog-button'). on('click', function() {
$('#dialog').load('dialog.php', function() { $('#dialog').dialog('open'); });
});
$('#dialog').dialog({
autoOpen: false,
modal: true,
closeOnEscape: false,
buttons: [{
"text": "Save",
"class": "save",
"value": "2",
},{
"text": "Cancel",
"icons": { primary: "ui-icon-cancel" },
"click": function() {
$( this ).dialog( "close" );
}
}],
close : function() { $('.ui-dialog-buttonset .save').unbind(); }
});
之前不会自动打开,此时内容通过jQuery #dialog-button
被拉入对话框,并在通过回调时打开html完成加载。
在对话框中,使用load()
将点击事件绑定到.save
按钮,理论上不应允许触发点击事件。在单击按钮的禁用属性为“true”并在对话框关闭后调用jQuery one()
时,我又采取了一个步骤。
以下是加载到对话框中的代码,并将ajax调用绑定到按钮:
unbind()
当ajax完成时,窗口重新加载或发生错误。没有错误。
到目前为止,我唯一的工作理论是,不知何故整个对话框被创建了两次但是我迄今为止无法实现这一点。除此之外我完全不知所措。我自己无法重现这个问题,而且似乎每个月左右在每天使用的Web应用程序中大约发生一次。这显然使调试变得更加困难。