16

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')が、同じ結果になりました。

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

4

2 に答える 2

35

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

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

于 2012-11-27T15:12:23.123 に答える
1

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

 $(".ui-dialog-content").dialog("close");
于 2012-11-27T15:13:00.643 に答える