检测是否打开了jQuery UI对话框

时间:2010-07-22 21:48:31

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

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

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

5 个答案:

答案 0 :(得分:167)

如果您阅读docs.

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

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

答案 1 :(得分:51)

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

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

答案 2 :(得分:20)

如果要检查对话框是否在特定元素上打开,则可以执行此操作:

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

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

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

或者...

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

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

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

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

#elem { display: none; }