Определите, открыто ли диалоговое окно пользовательского интерфейса jQuery


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

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

5 92

5 ответов:

Если вы читали docs.

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

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

на самом деле, вы должны сравнить его с истинным. Если диалог еще не существует, он не вернет 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
}

диалог 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; }