web-dev-qa-db-fra.com

Détecter si une boîte de dialogue jQuery UI est ouverte

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?

93
user208662

Si vous lisez la docs.

$('#mydialog').dialog('isOpen')

Cette méthode retourne un booléen (true ou false), pas un objet jQuery.

166
Byron Whitlock

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
}
51
marcovtwout

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
}
20
Nick Craver

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

2
Avinash

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; }
0
user2452922