Я использую диалоговое окно пользовательского интерфейса jQuery. Если он открыт, я хочу сделать одно. Если он закрыт, я хочу заняться другим.
Мой вопрос: как определить, открыто ли диалоговое окно пользовательского интерфейса jQuery?
Я использую диалоговое окно пользовательского интерфейса jQuery. Если он открыт, я хочу сделать одно. Если он закрыт, я хочу заняться другим.
Мой вопрос: как определить, открыто ли диалоговое окно пользовательского интерфейса jQuery?
Ответы:
Если вы читаете docs.
$('#mydialog').dialog('isOpen')
Этот метод возвращает логическое значение (true или false), а не объект jQuery.
$("#mydialog").hasClass("ui-dialog-content")
. См. Stackoverflow.com/questions/29528706/…
Фактически, вы должны явно сравнить это с истиной. Если диалог еще не существует, он не вернет 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
}
Или...
if ($('#elem:visible').length) {
// do something
}
$dialog.hasClass('ui-dialog-content')
Диалог 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; }