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

问题描述 投票:93回答:5

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

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

jquery jquery-ui jquery-ui-dialog
5个回答
167
投票

如果你读了docs.

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

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


51
投票

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

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

20
投票

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

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

或者,如果您只想检查元素本身是否可见,您可以执行以下操作:

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

要么...

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

2
投票

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

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


0
投票

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

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

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

#elem { display: none; }
© www.soinside.com 2019 - 2024. All rights reserved.