J'utilise une boîte de dialogue d'interface utilisateur jQuery. S'il est ouvert, je veux faire une chose. S'il est fermé, je veux en faire un autre.
Ma question est la suivante: comment détecter si une boîte de dialogue jQuery UI est ouverte ou non?
J'utilise une boîte de dialogue d'interface utilisateur jQuery. S'il est ouvert, je veux faire une chose. S'il est fermé, je veux en faire un autre.
Ma question est la suivante: comment détecter si une boîte de dialogue jQuery UI est ouverte ou non?
Réponses:
Si vous lisez les docs.
$('#mydialog').dialog('isOpen')
Cette méthode retourne un booléen (vrai ou faux), pas un objet jQuery.
$("#mydialog").hasClass("ui-dialog-content"). Voir stackoverflow.com/questions/29528706/…
En fait, vous devez le comparer explicitement à vrai. Si la boîte de dialogue n'existe pas encore, elle ne retournera pas false (comme vous vous en doutez), elle renverra un objet DOM.
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
Si vous voulez vérifier si la boîte de dialogue est ouverte sur un élément particulier, vous pouvez le faire:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
Ou si vous voulez simplement vérifier si l'élément lui-même est visible, vous pouvez faire:
if ($('#elem').is(':visible')) {
// do something
}
Ou...
if ($('#elem:visible').length) {
// do something
}
$dialog.hasClass('ui-dialog-content')
La boîte de dialogue jQuery a une isOpenpropriété qui peut être utilisée pour vérifier si une boîte de dialogue jQuery est ouverte ou non.
Vous pouvez voir un exemple sur ce lien: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
Le commentaire de Nick Craver est le plus simple pour éviter l'erreur qui se produit si le dialogue n'a pas encore été défini:
if ($('#elem').is(':visible')) {
// do something
}
Vous devez d'abord définir la visibilité dans votre CSS, en utilisant simplement:
#elem { display: none; }