嗨,我在关闭 jquery 对话框时遇到问题。我有一个彗星连接,可以向我的浏览器发送消息。我想做的是,当我收到一条消息,我想做一些事情时,关闭对话框,然后再做一些事情。不幸的是,当我执行时:$('#dialog').dialog("close");它结束了我当前的JavaScript代码。有没有办法避免这种情况?还是我需要确保使用变量在最后运行收盘价?
例如,在这里您可以看到我的文本在之后不会更改:http://jsfiddle.net/hKhMC/
这是一个简单的演示,我的实际代码之后会进行大量计算,所以我想知道是否有一种解决方案不涉及在关闭前移动文本。
您正在递归触发对话框关闭事件。 在 Chrome 中,您的 jsfiddle 示例会导致Uncaught RangeError: Maximum call stack size exceeded
。 这是因为 .dialog('close')
方法在关闭对话框后触发 dialogclose
事件。当有人单击对话框工具栏上的X
按钮或按 ESC
键时,也会触发此事件。
但是,在对话框初始化期间绑定此事件,然后调用可以再次触发它的相同方法。
所以我找到了解决问题的方法。
下面是用于创建 JQueryUI 对话框的代码。
$('#currentCallDialog').dialog({
autoOpen : false,
height : 350,
width : 550,
modal : true,
buttons : {
"Open" : function() {
//.. Do something
}
},
close : function() {
$(this).dialog("close");
}
});
问题出在我尝试调用对话框("关闭")的关闭按钮中;删除后,一切正常,请参阅下面的代码以获取工作示例:
$('#currentCallDialog').dialog({
autoOpen : false,
height : 350,
width : 550,
modal : true,
buttons : {
"Open" : function() {
//.. Do something
}
},
close : function() {
//.. Do something
}
});