2009-03-28 41 views
8

estoy trabajando en Adobe AIR, y tengo una lista de divs que muestran información ampliada para cada elemento de la lista en un div oculto en un clic -, así:jQuery Toggle: ¿alguna forma de saber qué (ocultar o mostrar) se está aplicando?

$(this).click(function(){ 
$(this).next('div.info').toggle(); 
}); 

Este se extiende la altura del conjunto aplicación, por lo que eventualmente, si el usuario fuera a expandir todos los divs, habría una barra de desplazamiento lateral. Para evitar esto, quiero ajustar la altura de la ventana (ya sea creciendo o reduciendo, dependiendo). Tengo todo el código funcionando, excepto que no puedo descifrar cómo ingresar a la función de activación para descubrir qué efecto (ocultar o mostrar) se va a aplicar. Establecer mi instrucción if() en key en el estado final de la div de información no funciona, porque evalúa la div inmediatamente en el clic.

¿Hay alguna manera de saber qué .toggle se está aplicando en jQuery entonces puedo usar ese cambio de estado para aplicar mis otros cambios?

Respuesta

11

Una vez finalizada la palanca, se puede saber que se ha conmutado div:

var visible = $(this).next('div.info').toggle().is(":visible"); 
if(visible){ 
    alert("Hey! I've just showed up here!"); 
} 

De esa manera usted sabrá si la operación reciente mostró que el conmutador div o no

+0

Esto no funcionará dado que .is ('visible') coincide con las etiquetas * con el nombre * "visible". En su lugar, debe usar el pseudo selector de CSS ': visible'. –

+0

@mgood Eso es un error tipográfico. Corregido ahora, gracias :) – Seb

+2

esto no funcionará si se usa .toggle ('slow'). – exiang

7

Puede probar esto con:

if ($(selector).is(':visible')) { 
    // do something 
} 
Cuestiones relacionadas