【问题标题】:Detect if a jQuery UI dialog box is open检测 jQuery UI 对话框是否打开
【发布时间】:2011-03-19 19:58:26
【问题描述】:

我正在使用 jQuery UI 对话框。如果它是开放的,我想做一件事。如果它关闭了,我想再做一个。

我的问题是,如何检测 jQuery UI 对话框是否打开?

【问题讨论】:

    标签: jquery jquery-ui jquery-ui-dialog


    【解决方案1】:

    如果您阅读了docs.

    $('#mydialog').dialog('isOpen')
    

    此方法返回一个布尔值(true 或 false),而不是 jQuery 对象。

    【讨论】:

    • 噢!我不知道我怎么忽略了这一点。谢谢。
    • 您将如何对任何和所有对话框进行此测试?假设您有十个不同的对话框,它们具有单独的初始化和选项,并且您想测试它们中的任何一个是否打开,而不是特定的选择器?
    • 向所述对话框添加一个类,然后更改 isOpen 检查上的选择器。
    • 另外:十个对话框?也许通过重用一两个实例来减少这种情况是一个值得考虑的想法
    • 同时检查对话是否已经被$("#mydialog").hasClass("ui-dialog-content")初始化。见stackoverflow.com/questions/29528706/…
    【解决方案2】:

    实际上,您必须明确地将其与 true 进行比较。如果对话框还不存在,它不会返回 false(如您所料),它会返回一个 DOM 对象。

    if ($('#mydialog').dialog('isOpen') === true) {
        // true
    } else {
        // false
    }
    

    【讨论】:

    • 在最新的 JQuery 中返回 false。
    • 您将如何对任何和所有对话框进行此测试?假设您有十个不同的对话框,它们具有单独的初始化和选项,并且您想测试它们中的任何一个是否打开,而不是特定的选择器?
    • 也许可以创建一个类似 $(".ui-dialog").each(function(/*check this dialog*/)) 的函数?
    【解决方案3】:

    如果您想检查对话框是否在特定元素上打开,您可以这样做:

    if ($('#elem').closest('.ui-dialog').is(':visible')) { 
      // do something
    }
    

    或者,如果您只是想检查元素本身是否可见,您可以这样做:

    if ($('#elem').is(':visible')) { 
      // do something
    }
    

    或者……

    if ($('#elem:visible').length) { 
      // do something
    }
    

    【讨论】:

    • 我检查我的 div 是否没有像这样初始化:$dialog.hasClass('ui-dialog-content')
    • 谢谢,我无法使用“isOpen”获得上述答案,但这有效。
    【解决方案4】:

    jQuery 对话框有一个isOpen 属性,可用于检查 jQuery 对话框是否打开。

    您可以在此链接中查看示例: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html

    【讨论】:

      【解决方案5】:

      Nick Craver 的注释是最简单的,可以避免对话框尚未定义时出现的错误:

      if ($('#elem').is(':visible')) { 
        // do something
      }
      

      您应该首先在 CSS 中设置可见性,只需使用:

      #elem { display: none; }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多