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

标签 javascript jquery jquery-ui-dialog

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

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

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

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

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

最佳答案

您可以简单地使用

$( ".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');
    };
});

关于javascript - 如何关闭所有打开的 JQuery 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621374/

相关文章:

javascript - 如何在 node.js 中输出深度堆栈跟踪?

javascript - html5 和 JavaScript : is setTimeout breaking this?

javascript - jQuery makeDraggable 有更多技巧吗?

javascript - highcharts 隐藏 xaxis 类别

javascript - 触发在不同代码块中分配的 jQuery 事件处理程序

jquery - 对话框图标

javascript 为 undefined variable 赋值

JavaScript 按类型和大小对变量进行验证

javascript - 如何使用 window.scroll jquery 进行一次触发点击?

php - 为什么PHP对AJAX的响应包含<script> aBunchOfJavascriptHere </script>?