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

use*_*662 95 jquery jquery-ui jquery-ui-dialog

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

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

Byr*_*ock 172

如果你阅读了文档.

$('#mydialog').dialog('isOpen')
Run Code Online (Sandbox Code Playgroud)

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


mar*_*out 52

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

if ($('#mydialog').dialog('isOpen') === true) {
    // true
} else {
    // false
}
Run Code Online (Sandbox Code Playgroud)

  • 在最新的JQuery中返回false. (4认同)
  • 也许创建一个像$(".ui-dialog")这样的函数.每个(函数(/*检查这个对话框*/))? (2认同)

Nic*_*ver 21

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

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

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

if ($('#elem').is(':visible')) { 
  // do something
}
Run Code Online (Sandbox Code Playgroud)

要么...

if ($('#elem:visible').length) { 
  // do something
}
Run Code Online (Sandbox Code Playgroud)

  • 我检查我的div是否没有像那样初始化:`$ dialog.hasClass('ui-dialog-content')` (3认同)