2010-07-22 19 views

Respuesta

156

Si usted lee la docs.

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

Este método devuelve un booleano (verdadero o falso), no un objeto jQuery.

+0

¡Doh! No sé cómo lo pasé por alto. Gracias. – user208662

+1

¿Cómo harías esta prueba para todos los diálogos? Supongamos que tiene diez diálogos diferentes con entradas y opciones separadas y desea probar si CUALQUIERA de ellos está abierto, no un selector específico. –

+0

Agregue una clase a dichos cuadros de diálogo, luego cambie el selector en su verificación isOpen. – Suipaste

19

Si desea comprobar si está abierta del diálogo en un elemento particular puede hacer esto:

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

O si lo que quiere comprobar si el elemento en sí es visible que puede hacer:

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

O ...

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

Reviso mi div si no se inicializa así: '$ dialog.hasClass ('ui-dialog-conten t ') ' – Sergey

+0

Gracias, no pude obtener las respuestas anteriores utilizando" isOpen "para trabajar para mí, pero esto funcionó. –

47

En realidad, tiene que compararlo explícitamente con verdadero. Si el diálogo aún no existe, no devolverá falso (como era de esperar), devolverá un objeto DOM.

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

Devuelve falso en el último JQuery. – hoyhoy

+1

¿Cómo harías esta prueba para todos los diálogos? Supongamos que tiene diez diálogos diferentes con entradas y opciones separadas y desea probar si CUALQUIERA de ellos está abierto, no un selector específico. –

+2

Quizás crees una función como $ (". Ui-dialog"). Cada una (función (/ * marca este diálogo * /))? – marcovtwout

0

Nick Craver es la más sencilla de evitar el error que se produce si el diálogo no se ha definido:

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

Debe establecer la visibilidad en su CSS primero, usando simplemente:

#elem { display: none; } 
Cuestiones relacionadas