Я використовую діалогове вікно інтерфейсу jQuery. Якщо він відкритий, я хочу зробити одне. Якщо він закритий, я хочу зробити інше.
Моє запитання полягає в тому, як я можу виявити, відкрите чи ні діалогове вікно інтерфейсу jQuery?
Я використовую діалогове вікно інтерфейсу jQuery. Якщо він відкритий, я хочу зробити одне. Якщо він закритий, я хочу зробити інше.
Моє запитання полягає в тому, як я можу виявити, відкрите чи ні діалогове вікно інтерфейсу jQuery?
Відповіді:
Якщо ви читаєте документи.
$('#mydialog').dialog('isOpen')
Цей метод повертає булевий (істинний або хибний), а не jQuery об'єкт.
$("#mydialog").hasClass("ui-dialog-content")
. Дивіться stackoverflow.com/questions/29528706/…
Власне, ви повинні явно порівнювати це з істинним. Якщо діалогове вікно ще не існує, воно не поверне помилкове (як ви очікували), воно поверне об’єкт 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
}
$dialog.hasClass('ui-dialog-content')
Діалог 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; }