2012-08-09 73 views
1

你好我有結束我的jQuery對話框的問題。 我所擁有的是將消息發送到我的瀏覽器的彗星連接。我想要做的是,當我收到一條消息時,我想要做一些事情,關閉對話框,然後做更多的事情。不幸的是,當我執行:$('#dialog')。dialog(「close」);它結束我目前的JavaScript代碼。有沒有辦法避免這種情況?還是我需要確保關閉在最後使用變量運行?jQueryUI的對話框(「親密」),結束當前的JavaScript線程

例如,在這裏你可以看到,當它是我的文字將不會更改: http://jsfiddle.net/hKhMC/

這是一個簡單的演示我實際的代碼做大量的計算之後,所以我在想,如果有一個解決方案不涉及在關閉前移動文本。

回答

4

您正在遞歸地觸發對話關閉事件。在Chrome中,您的jsfiddle示例會導致Uncaught RangeError: Maximum call stack size exceeded。這是因爲.dialog('close')方法在關閉對話框後觸發了dialogclose事件。當有人點擊對話框工具欄上的X按鈕或按下ESC鍵此事件也被解僱。

但是您在對話框初始化過程中結合該事件,然後調用,可以再次觸發它的方法相同。

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 
    } 
});