2

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

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

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

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

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

4

1 回答 1

3

你可以简单地使用

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

如果您检查对话框源代码,您会发现关闭已关闭的对话框没有任何效果,因此您可以安全地使用它

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');
    };
});
于 2013-07-12T18:30:55.630 回答