如何判断是不是有任何 jquery 对话框碰巧打开? [复制]

Posted

技术标签:

【中文标题】如何判断是不是有任何 jquery 对话框碰巧打开? [复制]【英文标题】:How to tell if any jquery dialog happens to be open? [duplicate]如何判断是否有任何 jquery 对话框碰巧打开? [复制] 【发布时间】:2012-02-26 04:24:44 【问题描述】:

寻找一个通用案例解决方案来确定当前是否打开了任何 jquery 对话框(有多个)。试过了:

$(".ui-dialog-content").dialog("isOpen") === true
$(".ui-dialog").dialog("isOpen") == true
$(document).dialog("isOpen") == true
$("*").dialog('isOpen') == true

没有任何成功。我希望“.ui-dialog-content”能够工作,因为我显然可以使用该选择器关闭任何打开的对话框,但它没有。

【问题讨论】:

【参考方案1】:

你可以试试

if($(".ui-dialog").is(":visible"))
//dialog is open

【讨论】:

那么这个页面上的样式一定很奇怪。在打开对话框时的萤火虫控制台中: $('.ui-dialog').is("visible") == false @lamont - 注意:visible 前面的冒号 - 这是一个伪选择器。【参考方案2】:

jQuery UI dailog 有一个 isOpen 方法,如果 dailog 是打开的,它会返回 true。在打开对话框的元素上调用它。

$('.ui-dialog-content').dialog("isOpen");

参考:http://jqueryui.com/demos/dialog/#method-isOpen

【讨论】:

查看我的问题 - $('.ui-dialog-content').dialog("isOpen") 在对话框打开时返回 false。 试过这个 - 只适用于类中的第一个对话框。您需要使用 .each() 来检查 any 对话框。 我认为应该通过对话在内部​​运行每个循环。【参考方案3】:

根据 API 文档,您应该使用

$( ".selector" ).dialog( "isOpen" )

判断对话框是否打开。该函数返回一个布尔值。 例如,

if( $("selector").dialog("isOpen")===true )
     /*do stuff when dialog is open*/
 else 
     /*do stuff when dialog is closed*/
;

【讨论】:

【参考方案4】:

检查它是否通过 CSS 显示?不确定这是否是正确的方法,但我怀疑它会起作用。

$(".ui-dialog").css('display') != "none"

【讨论】:

编辑:实际上 $(".ui-dialog-content").css('display') != "none" 如果对话框关闭则给出误报,但在关闭时返回 true打开,而“.ui-dialog”似乎总是假的。 >>> $(".ui-dialog-content").css('display') "block" >>> $(".ui-dialog").css('display' ) "none" 无论对话状态如何,至少在 firefox 中。 是的,它是在黑暗中拍摄的,我没有使用 ui-dialog,超出了我的常识,看起来你找到了答案,太好了!【参考方案5】:
$('html').click(function() 
    x++;
    if(x==2)
    $(".ui-dialog-titlebar-close").trigger("click");
    x=0;
    
    );

这适用于所有情况,您从 DOM 调用 Dialog。

【讨论】:

不回答问题

以上是关于如何判断是不是有任何 jquery 对话框碰巧打开? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

判断jQuery是不是没有找到任何元素

如何在打开新对话框之前关闭所有 jquery ui 对话框?

如何防止 Jquery 对话框离开页面?

用jquery 怎么判断按钮是不是被点击了

jquery如何判断数组是不是为空?

spss:得到一个多元线性回归模型之后,如何比较预测值和真实值?如何判断模型是不是有预测能力?