2012-11-27 75 views
14

如何關閉jQuery中所有打開的dialog框? 情況是下一個:我有一個簡單的頁面沒有對話框。它有一些按鈕打開它擁有的對話框。關閉所有打開的對話框? (jQuery)

當我點擊一個按鈕,我需要關閉所有打開的對話框。

下面是HTML:

<div id="buttons"> 
    <a href="#" id="btn_1">Button 1</a> 
    <a href="#" id="btn_2">Button 2</a> 
    <a href="#" id="btn_3">Button 3</a> 
</div> 
<div id="dialog_1" class="dialogbox">...</div> 
<div id="dialog_2" class="dialogbox">...</div> 
<div id="dialog_3" class="dialogbox">...</div> 

這裏是jQuery的:

$(function() { 
    $('#buttons').find('a').click(function() { 
     // close all dialogs 
     $('.dialogbox').dialog("close"); 

     // find out clicked id and open dialog 
     var nr = this.id.split("_")[1]; 
     $('#dialog_'+nr).dialog(); 
    }); 
}); 

中的Chrome說:Uncaught Error: cannot call methods on dialog prior initialization; attempted to call method 'close'

我試圖檢查$('.dialogbox').dialog('isOpen'),但結果相同。

如何關閉所有對話框?

+1

您必須首先初始化對話之前,這個功能曾經得到的名爲$()準備就緒(函數(){$( '對話框')對話框({})} ) –

回答

29

,因爲它們都繼承了同一個班級,這是選擇所有靠近的最佳方式:

$(".ui-dialog-content").dialog("close");

+1

sweeeeeeeeeeet! – sajanyamaha

+0

小心!對於HTML中尚未初始化的對話框,這可能會導致錯誤。一個工作解決方案在這裏:http://stackoverflow.com/a/9060927/368896 –

1

你可以簡單試試這個,因爲他們都有.ui-dialog-content類,通過這樣選擇並關閉他們,像這樣: - 。

$(".ui-dialog-content").dialog("close"); 
+0

你的答案比接受的更好嗎? –