Utilizzando la funzione .is() messa a disposizione da jQuery possiamo facilmente effettuare dei controlli su un elemento che ci interessa per sapere se è visibile o meno in quel momento.

Verificare se un elemento è visibile

Nell’HTML seguente nascondiamo il div in considerazione usando del CSS in linea (pratica tendenzialmente sconsigliata, in questo caso ci risulta comodo utilizzarla a titolo d’esempio).

<div id="test" style="display:none"></div>

Per verificare se il div è visible oppure no tramite jQuery dobbiamo usare la funzione .is() passando :visible come parametro:

if( $('#test').is(':visible') ) {
    // se #test è visibile fai qualcosa
}
else {
    // se non è visibile fai qualcos'altro
}

Verificare se un elemento è nascosto/invisibile

La procedura da utilizzare è la stessa, tuttavia il parametro da passare sarà :hidden:

if( $('#test').is(':hidden') ) {
    // se #test è invisibile fai qualcosa
}
else {
    // se invece è visibile fai qualcos'altro
}

Nota: se un elemento non occupa alcuno spazio nel documento, is(‘hidden’) darà come risultato “vero” anche se l’elemento è realmente visibili. E’ quindi più consigliato utilizzare la seguente sintassi:

if( !$('#test').is(':visible') ) {
    // se #test è diverso da visibile fai qualcosa
}
else {
    // altrimenti fai qualcos'altro
}

Loop attraverso elementi visibili

Prendiamo questo html come base:

<div id="test">
    <div>Ciao mondo</div>
    <div style="display:none">non mi vedi</div>
    <div>evviva</div>
</div>

Per effettuare un loop dentro tutti gli elementi visibili contenuti in #test dovremo scrivere:

$("#test div:visible").each( function() {
    document.write($(this).html()+'
');
});

Che dice: per ogni div visibile discendente di #test stampami il loro contenuto.
Il risultato sarà:

Ciao mondo
evviva

E di nuovo, è possibile considerare l’elemento invisibile utilizzato la logica inversa proposta nell’esempio precedente! Questo è quanto 😉