如何关闭所有打开的JQuery对话框

时间:2013-07-12 18:11:13

标签: javascript jquery jquery-ui-dialog

在升级到jQuery的最新库之前,我使用此代码关闭所有打开的对话框。现在这段代码只会引发错误。

  $(".dialogs:ui-dialog").each(function () {

            if ($(this).data('dialog').isOpen()) {
               $(this).dialog('close');
          };
 });

我需要完成的是当jQuery对话框打开并且用户单击菜单项以打开另一个对话框时,我需要确保在打开新对话框之前关闭所有其他对话框。

用于完成此任务的新代码是什么?

1 个答案:

答案 0 :(得分:3)

你可以简单地使用

$( ".dialogs" ).dialog( "close" );

如果您检查dialog source code,您会看到关闭已关闭的对话框无效,因此您可以安全地使用它

close: function( event ) {
    var that = this;

    if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
        return;
    }
    ...
}

如果你想让你的逻辑与任何原因相似,你可以使用这个

$(".dialogs").each(function () {
    var $dialog = $(this);
    if ($dialog.dialog('isOpen')) {
        $dialog.dialog('close');
    };
});