如何判断是不是有任何 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 对话框碰巧打开? [复制]的主要内容,如果未能解决你的问题,请参考以下文章