1

嗨,我在关闭我的 jquery 对话框时遇到问题。我所拥有的是一个彗星连接,可以将消息发送到我的浏览器。我想做的是当我收到一条消息时我想做一些事情,关闭对话框然后做更多的事情。不幸的是,当我执行时: $('#dialog').dialog("close"); 它结束了我当前的 javascript 代码。有没有办法避免这种情况?还是我需要确保使用变量在最后运行关闭?

例如,在这里你可以看到我的文字在它之后不会改变:http: //jsfiddle.net/hKhMC/

这是一个简单的演示,我的实际代码之后会进行大量计算,所以我想知道是否有一个解决方案不涉及在关闭之前移动文本。

4

2 回答 2

5

您正在递归地触发对话框关闭事件。在 Chrome 中,您的 jsfiddle 示例会导致Uncaught RangeError: Maximum call stack size exceeded. 这是因为该 .dialog('close')方法dialogclose在关闭对话框后触发事件。X当有人单击对话框工具栏上的按钮或按下键时,也会触发此事件ESC

但是,您在对话框初始化期间绑定此事件,然后调用可以再次触发它的相同方法。

于 2012-08-27T16:56:32.687 回答
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
    }
});
于 2012-08-27T00:28:12.767 回答