J'utilise une boîte de dialogue jQuery UI. Si c'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?
Si vous lisez la docs.
$('#mydialog').dialog('isOpen')
Cette méthode retourne un booléen (true ou false), pas un objet jQuery.
En fait, vous devez le comparer explicitement à true. Si la boîte de dialogue n'existe pas encore, elle ne retournera pas false (comme on pourrait s'y attendre), elle retournera 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 juste 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
}
la boîte de dialogue jQuery a une propriété isOpen
qui peut être utilisée pour vérifier si une boîte de dialogue jQuery est ouverte ou non.
Vous pouvez voir des exemples 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 tout d’abord définir la visibilité dans votre CSS, en utilisant simplement:
#elem { display: none; }