2009-03-28 5 views
8

sto lavorando in Adobe AIR, e ho una lista di div che mostrano espanse informazioni per ogni elemento della lista in un div nascosto in un click - in questo modo:jQuery Toggle - un modo per sapere quale (nascondere o mostrare) viene applicato?

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

Questo estende l'altezza di tutta la app, quindi alla fine, se l'utente dovesse espandere tutti i div, ci sarebbe una barra di scorrimento sul lato. Per aggirare questo, voglio regolare l'altezza della finestra (in crescita o in diminuzione, a seconda). Ho tutto il codice funzionante, tranne che non riesco a capire come entrare nella funzione .toggle per scoprire quale effetto (nascondere o mostrare) verrà applicato. L'impostazione dell'istruzione if() sulla chiave sullo stato finale del div di informazioni non funziona, perché valuta immediatamente il div sul clic.

C'è un modo per sapere quale .toggle viene applicato in jQuery in modo che io possa usare quella modifica di stato per applicare le altre mie modifiche?

risposta

11

Dopo la levetta finisce, si può sapere che div è stata attivata:

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

In questo modo saprete se la recente operazione di commutazione mostrato la div o no.

+0

Questo non funzionerà poiché .is ('visible') corrisponde ai tag * di nome * "visibile". È invece necessario utilizzare lo pseudo-selettore CSS "visibile". –

+0

@mgood Questo è un errore di battitura. Corretto ora, grazie :) – Seb

+2

non funzionerà se si utilizza .toggle ('slow'). – exiang

7

È possibile verificare questo con:

if ($(selector).is(':visible')) { 
    // do something 
} 
Problemi correlati