web-dev-qa-db-ja.com

開いているダイアログボックスをすべて閉じますか? (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 say:_Uncaught Error: cannot call methods on dialog prior initialization; attempted to call method 'close'_。

$('.dialogbox').dialog('isOpen')をチェックしようとしましたが、同じ結果になりました。

すべてのダイアログを閉じるにはどうすればよいですか?

16
netdjw

それらはすべて同じクラスを継承するため、これはすべてを選択して近くに配置するための最良の方法です。

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

35
dsgriffin

それらはすべて.ui-dialog-contentクラスを持っているので、これを簡単に試すことができます。それで選択し、次のように閉じます。-

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