Estoy usando un diálogo de interfaz de usuario de jQuery. Si está abierto, quiero hacer una cosa. Si está cerrado, quiero hacer otro.
Mi pregunta es, ¿cómo puedo detectar si un cuadro de diálogo de la interfaz de usuario de jQuery está abierto o no?
Estoy usando un diálogo de interfaz de usuario de jQuery. Si está abierto, quiero hacer una cosa. Si está cerrado, quiero hacer otro.
Mi pregunta es, ¿cómo puedo detectar si un cuadro de diálogo de la interfaz de usuario de jQuery está abierto o no?
Respuestas:
Si lees el docs.
$('#mydialog').dialog('isOpen')
Este método devuelve un booleano (verdadero o falso), no un objeto jQuery.
$("#mydialog").hasClass("ui-dialog-content"). Ver stackoverflow.com/questions/29528706/…
En realidad, tienes que compararlo explícitamente con verdadero. Si el cuadro de diálogo aún no existe, no devolverá falso (como era de esperar), devolverá un objeto DOM.
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
Si desea verificar si el cuadro de diálogo está abierto en un elemento en particular, puede hacer esto:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
O si solo desea verificar si el elemento en sí es visible, puede hacer:
if ($('#elem').is(':visible')) {
// do something
}
O...
if ($('#elem:visible').length) {
// do something
}
$dialog.hasClass('ui-dialog-content')
El diálogo de jQuery tiene una isOpenpropiedad que se puede usar para verificar si un diálogo de jQuery está abierto o no.
Puede ver un ejemplo en este enlace: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
El comentario de Nick Craver es el más sencillo para evitar el error que se produce si aún no se ha definido el diálogo:
if ($('#elem').is(':visible')) {
// do something
}
Sin embargo, primero debe configurar la visibilidad en su CSS, usando simplemente:
#elem { display: none; }