Я использую диалог пользовательского интерфейса jQuery. Если он открыт, я хочу сделать одну вещь. Если он закрыт, я хочу сделать другой.
Мой вопрос: как определить, открыто ли диалоговое окно jQuery UI или нет?
Я использую диалог пользовательского интерфейса jQuery. Если он открыт, я хочу сделать одну вещь. Если он закрыт, я хочу сделать другой.
Мой вопрос: как определить, открыто ли диалоговое окно jQuery UI или нет?
Если вы читали документы.
$('#mydialog').dialog('isOpen')
Этот метод возвращает логическое значение (true или false), а не объект jQuery.
$("#mydialog").hasClass("ui-dialog-content")
. См. stackoverflow.com/questions/29528706/
- person Autumn Leonard; 29.11.2017
На самом деле, вы должны явно сравнить его с истинным. Если диалог еще не существует, он не вернет false (как и следовало ожидать), он вернет объект DOM.
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
Если вы хотите проверить, открыто ли диалоговое окно для определенного элемента, вы можете сделать это:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
Или, если вы просто хотите проверить, виден ли сам элемент, вы можете сделать:
if ($('#elem').is(':visible')) {
// do something
}
Or...
if ($('#elem:visible').length) {
// do something
}
$dialog.hasClass('ui-dialog-content')
- person Sergey; 02.06.2015
Диалоговое окно jQuery имеет свойство isOpen
, которое можно использовать для проверки того, открыто ли диалоговое окно jQuery.
Вы можете увидеть пример по этой ссылке: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
Комментарий Ника Крейвера — самый простой способ избежать ошибки, возникающей, если диалоговое окно еще не определено:
if ($('#elem').is(':visible')) {
// do something
}
Однако сначала вы должны установить видимость в своем CSS, используя просто:
#elem { display: none; }