Estou usando uma caixa de diálogo jQuery UI. Se estiver aberto, quero fazer uma coisa. Se estiver fechado, quero fazer outro.
Minha pergunta é: como faço para detectar se uma caixa de diálogo jQuery UI está aberta ou não?
Estou usando uma caixa de diálogo jQuery UI. Se estiver aberto, quero fazer uma coisa. Se estiver fechado, quero fazer outro.
Minha pergunta é: como faço para detectar se uma caixa de diálogo jQuery UI está aberta ou não?
Respostas:
Se você ler os documentos.
$('#mydialog').dialog('isOpen')
Este método retorna um booleano (verdadeiro ou falso), não um objeto jQuery.
$("#mydialog").hasClass("ui-dialog-content")
. Consulte stackoverflow.com/questions/29528706/…
Na verdade, você deve compará-lo explicitamente com o verdadeiro. Se a caixa de diálogo ainda não existir, ela não retornará falso (como você esperaria), ela retornará um objeto DOM.
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
Se você deseja verificar se a caixa de diálogo está aberta em um elemento específico, você pode fazer o seguinte:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
Ou se você apenas deseja verificar se o próprio elemento está visível, você pode fazer:
if ($('#elem').is(':visible')) {
// do something
}
Ou...
if ($('#elem:visible').length) {
// do something
}
$dialog.hasClass('ui-dialog-content')
O diálogo jQuery tem uma isOpen
propriedade que pode ser usada para verificar se um diálogo jQuery está aberto ou não.
Você pode ver um exemplo neste link: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
O comentário de Nick Craver é o mais simples para evitar o erro que ocorre se a caixa de diálogo ainda não foi definida:
if ($('#elem').is(':visible')) {
// do something
}
Você deve definir a visibilidade em seu CSS primeiro, usando simplesmente:
#elem { display: none; }