Определить, открыто ли диалоговое окно jQuery UI - PullRequest
94 голосов
/ 23 июля 2010

Я использую диалоговое окно jQuery UI.Если он открыт, я хочу сделать одну вещь.Если он закрыт, я хочу сделать другое.

Мой вопрос: как мне определить, открыто ли диалоговое окно jQuery UI или нет?

Ответы [ 5 ]

169 голосов
/ 23 июля 2010

Если вы прочитали документы .

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

Этот метод возвращает логическое значение (true или false), а не объект jQuery.

51 голосов
/ 18 ноября 2011

На самом деле, вы должны явно сравнить его с истинным.Если диалог еще не существует, он не вернет false (как и следовало ожидать), он вернет объект DOM.

if ($('#mydialog').dialog('isOpen') === true) {
    // true
} else {
    // false
}
20 голосов
/ 23 июля 2010

Если вы хотите проверить, открыто ли диалоговое окно для определенного элемента, вы можете сделать это:

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

Или, если вы просто хотите проверить, видим ли сам элемент, вы можете сделать:

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

Или ...

if ($('#elem:visible').length) { 
  // do something
}
2 голосов
/ 26 февраля 2012

В диалоговом окне jQuery есть свойство isOpen, которое можно использовать для проверки, открыто ли диалоговое окно jQuery или нет.

Пример вы можете увидеть по этой ссылке: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html

0 голосов
/ 29 декабря 2017

Комментарий Ника Крейвера является самым простым, чтобы избежать ошибки, которая возникает, если диалог еще не был определен:

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

Сначала вы должны установить видимость в своем CSS, используя просто:

#elem { display: none; }
...