2010-07-22 7 views

Répondre

156

Si vous lisez le docs.

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

Cette méthode renvoie une valeur booléenne (true ou false) et non un objet jQuery.

+0

Doh! Je ne sais pas comment j'ai oublié ça. Je vous remercie. – user208662

+1

Comment feriez-vous ce test pour toutes les boîtes de dialogue? Supposons que vous ayez dix boîtes de dialogue différentes avec des options et des options distinctes et que vous souhaitiez tester si AUCUNE d'entre elles est ouverte, et non un sélecteur spécifique. –

+0

Ajoutez une classe auxdites boîtes de dialogue, puis modifiez le sélecteur sur votre vérification isOpen. – Suipaste

19

Si vous voulez vérifier si vous pouvez faire l'ouverture sur un élément particulier de la boîte de dialogue suivante:

if ($('#elem').closest('.ui-dialog').is(':visible')) { 
    // do something 
} 

Ou si vous voulez juste pour vérifier si l'élément lui-même est visible que vous pouvez faire:

if ($('#elem').is(':visible')) { 
    // do something 
} 

Ou ...

if ($('#elem:visible').length) { 
    // do something 
} 
+3

Je vérifie mon div si pas initialisé comme ça: 'dialog.hasClass $ ('ui-dialogue-conten t ') ' – Sergey

+0

Merci, je ne pouvais pas obtenir les réponses ci-dessus en utilisant" isOpen "pour travailler pour moi, mais cela a fonctionné. –

47

En fait, vous devez le comparer explicitement à true. Si le dialogue n'existe pas encore, il ne renverra pas false (comme vous vous en doutez), il retournera un objet DOM.

if ($('#mydialog').dialog('isOpen') === true) { 
    // true 
} else { 
    // false 
} 
+4

Renvoie false dans la dernière version de JQuery. – hoyhoy

+1

Comment feriez-vous ce test pour toutes les boîtes de dialogue? Supposons que vous ayez dix boîtes de dialogue différentes avec des options et des options distinctes et que vous souhaitiez tester si AUCUNE d'entre elles est ouverte, et non un sélecteur spécifique. –

+2

Peut-être créer une fonction comme $ (". Ui-dialog"). Chaque (fonction (/ * vérifier cette boîte de dialogue * /))? – marcovtwout

0

commentaire de Nick Craver est le plus simple d'éviter l'erreur qui se produit si la boîte de dialogue n'a pas encore été défini:

if ($('#elem').is(':visible')) { 
    // do something 
} 

Vous devez définir la visibilité dans votre CSS d'abord que, en utilisant simplement:

#elem { display: none; } 
Questions connexes