2012-11-27 29 views
14

開かれたdialogのボックスをすべて閉じるには、jQuery? 状況は次のとおりです:ダイアログなしの単純なページがあります。ダイアログにはいくつかのボタンがあります。開いているダイアログボックスをすべて閉じますか? (JQuery)

ボタンをクリックすると、開いているダイアログをすべて閉じる必要があります。 jQueryの

<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> 

そしてここにある:ここで

はHTMLです

$(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')をチェックしようとしましたが、同じ結果です。

どのようにすべてのダイアログを閉じることができますか?それによってその選択し、それらはすべて.ui-dialog-contentクラスを持っているとして、あなたは簡単なこれを試すことができます

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

+1

は、あなたが最初にあなたのダイアログを初期化する必要があります準備(機能(){。$( 'ダイアログボック')ダイアログ({})} ) –

答えて

29

が、これがすべてと緊密を選択するための最良の方法ですこのように、それらを閉じ: - 。この機能は今までのは、$()と呼ばれ得る前に

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

sweeeeeeeeeeet! – sajanyamaha

+0

注意!まだ初期化されていないHTMLのダイアログでは、エラーが発生する可能性があります。実際の解決策はここにあります:http://stackoverflow.com/a/9060927/368896 –

1

:彼らはすべて同じクラスを継承しているので

+0

あなたの答えは受け入れられたものよりもどのように優れていますか? –

関連する問題