Close all open dialog boxes? (JQuery)
Asked Answered
C

2

16

How can I close all opened dialog boxes in jQuery? The situation is next: I have a simple page without dialogs. It has some buttons what open it owns dialogs.

When I click on a button I need to close all opened dialogs.

Here is the 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>

And here is the 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();
    });
});

The Chrome say: Uncaught Error: cannot call methods on dialog prior initialization; attempted to call method 'close'.

I was tried to check $('.dialogbox').dialog('isOpen'), but same result.

How can I close all dialogs?

Capture answered 27/11, 2012 at 15:10 Comment(1)
You must first initialize your dialogs before this function ever get's called $().ready(function() {$('.dialogbox').dialog({})})Brnaby
O
36

Since they all inherit the same class, this is the best way to select all and close by:

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

Oby answered 27/11, 2012 at 15:12 Comment(1)
Careful! For dialogs in the HTML that have not yet been initialized, this can result in an error. A working solution is here: https://mcmap.net/q/408042/-how-to-close-all-jquery-ui-dialog-before-open-a-new-dialogVide
P
1

You can simple try this as they all have the .ui-dialog-content class, so select by that and close them, like this:-

 $(".ui-dialog-content").dialog("close");
Prearrange answered 27/11, 2012 at 15:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.