您好我关闭了我的jquery对话框。 我所拥有的是一个向我的浏览器发送消息的彗星连接。我想要做的是当我收到一条消息时,我想要做一些事情,关闭对话框,然后做更多的事情。不幸的是,当我执行:$('#dialog')。dialog(“close”);它结束了我当前的javascript代码。有办法避免这种情况吗?或者我是否需要确保使用变量在最后运行关闭?
例如,您可以在此处看到我的文字在以下情况下不会更改: http://jsfiddle.net/hKhMC/
这是一个简单的演示,我的实际代码后来做了很多计算,所以我想知道是否有一个解决方案不涉及在结束前移动文本。
答案 0 :(得分:4)
您以递归方式触发对话框关闭事件。在Chrome中,您的jsfiddle示例会导致Uncaught RangeError: Maximum call stack size exceeded
。这是因为.dialog('close')
方法在关闭对话框后触发dialogclose
事件。当有人单击对话框工具栏上的X
按钮或按下ESC
键时,也会触发此事件。
但是,您在对话框初始化期间绑定此事件,然后调用可以再次触发它的相同方法。
答案 1 :(得分:1)
所以我找到了解决问题的方法。
以下是用于创建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
}
});