Saya menggunakan dialog jQuery UI. Jika terbuka, saya ingin melakukan satu hal. Jika ditutup, saya ingin melakukan yang lain.
Pertanyaan saya adalah, bagaimana cara mendeteksi jika kotak dialog jQuery UI terbuka atau tidak?
Saya menggunakan dialog jQuery UI. Jika terbuka, saya ingin melakukan satu hal. Jika ditutup, saya ingin melakukan yang lain.
Pertanyaan saya adalah, bagaimana cara mendeteksi jika kotak dialog jQuery UI terbuka atau tidak?
Jawaban:
Jika Anda membaca dokumen.
$('#mydialog').dialog('isOpen')
Metode ini mengembalikan Boolean (benar atau salah), bukan objek jQuery.
$("#mydialog").hasClass("ui-dialog-content")
. Lihat stackoverflow.com/questions/29528706/…
Sebenarnya, Anda harus membandingkannya secara eksplisit dengan true. Jika dialog belum ada, dialog tidak akan mengembalikan false (seperti yang Anda harapkan), ini akan mengembalikan objek DOM.
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
Jika Anda ingin memeriksa apakah dialog terbuka pada elemen tertentu, Anda dapat melakukan ini:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
Atau jika Anda hanya ingin memeriksa apakah elemen itu sendiri terlihat, Anda dapat melakukan:
if ($('#elem').is(':visible')) {
// do something
}
Atau...
if ($('#elem:visible').length) {
// do something
}
$dialog.hasClass('ui-dialog-content')
Dialog jQuery memiliki isOpen
properti yang dapat digunakan untuk memeriksa apakah dialog jQuery terbuka atau tidak.
Anda dapat melihat contohnya di tautan ini: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
Komentar Nick Craver adalah yang paling sederhana untuk menghindari kesalahan yang terjadi jika dialog belum ditentukan:
if ($('#elem').is(':visible')) {
// do something
}
Anda harus mengatur visibilitas di CSS Anda terlebih dahulu, dengan menggunakan:
#elem { display: none; }