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

87

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

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

Теги:

4 ответа

146
Лучший ответ

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

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

Вам нужно явно сравнить это с true, чтобы избежать возврата диалогового окна в качестве объекта.

  • 0
    Doh! Я не знаю, как я это упустил. Спасибо.
  • 1
    Как бы вы сделали этот тест для всех без исключения диалогов? Скажем, у вас есть десять различных диалогов с отдельными начальными значениями и параметрами, и вы хотите проверить, открыт ли ЛЮБОЙ из них, а не определенный селектор?
Показать ещё 6 комментариев
45

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

if ($('#mydialog').dialog('isOpen') === true) {
    // true
} else {
    // false
}
  • 4
    Возвращает false в последнем JQuery.
  • 1
    Как бы вы сделали этот тест для всех без исключения диалогов? Скажем, у вас есть десять различных диалогов с отдельными начальными значениями и параметрами, и вы хотите проверить, открыт ли ЛЮБОЙ из них, а не определенный селектор?
Показать ещё 1 комментарий
19

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

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

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

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

Или...

if ($('#elem:visible').length) { 
  // do something
}
  • 3
    Я проверяю свой div, если он не инициализирован так: $dialog.hasClass('ui-dialog-content')
  • 0
    Спасибо, я не смог получить вышеуказанные ответы, используя «isOpen», но это сработало.
2
Диалоговое окно

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню