2010-07-22 7 views

risposta

156

Se leggete il docs.

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

Questo metodo restituisce un valore booleano (vero o falso), non un oggetto jQuery.

+0

Doh! Non so come ho trascurato questo. Grazie. – user208662

+1

Come eseguiresti questo test per tutte le finestre di dialogo? Supponiamo che tu abbia dieci diverse finestre di dialogo con opzioni e opzioni separate e vuoi verificare se UNO di essi è aperto, non un selettore specifico? –

+0

Aggiungere una classe a dette finestre di dialogo, quindi modificare il selettore sul controllo isOpen. – Suipaste

19

Se si desidera controllare se aperto della finestra di dialogo su un elemento particolare che si può fare questo:

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

Oppure, se volete solo per controllare se l'elemento stesso è visibile si può fare:

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

Oppure ...

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

Controllo il mio div se non inizializzato in questo modo: '$ dialog.hasClass ('ui-dialog-conten t ') ' – Sergey

+0

Grazie, non ho potuto ottenere le risposte di cui sopra usando" isOpen "per funzionare per me, ma questo ha funzionato. –

47

In realtà, è necessario confrontarlo esplicitamente con true. Se la finestra di dialogo non esiste ancora, non restituirà false (come ci si aspetterebbe), restituirà un oggetto DOM.

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

Restituisce false nell'ultimo JQuery. – hoyhoy

+1

Come faresti questo test per tutte le finestre di dialogo? Supponiamo che tu abbia dieci diverse finestre di dialogo con opzioni e opzioni separate e vuoi verificare se UNO di essi è aperto, non un selettore specifico? –

+2

Forse creare una funzione come $ (". Ui-dialog") each (funzione (/ * controlla questa finestra * /))? – marcovtwout

0

Nick Craver è il più semplice per evitare l'errore che si verifica se il dialogo non è stato ancora definito:

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

È necessario impostare la visibilità nel tuo CSS prima però, usando semplicemente:

#elem { display: none; }