Обнаружение, если открыто диалоговое окно jQuery UI

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

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

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Или...

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

Ответ 4

Диалоговое окно

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

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