it-swarm.com.ru

Определить, открыто ли диалоговое окно jQuery UI

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

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

93
user208662

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

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

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

166
Byron Whitlock

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

if ($('#mydialog').dialog('isOpen') === true) {
    // true
} else {
    // false
}
51
marcovtwout

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

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

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

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

Или же...

if ($('#elem:visible').length) { 
  // do something
}
20
Nick Craver

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

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

2
Avinash

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

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

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

#elem { display: none; }
0
user2452922