2011-09-05 7 views
6

Utilizzando jQuery, qual è il modo più semplice per determinare se un particolare elemento è visibile? Non intendo visibile all'interno della finestra corrente, ma sulla pagina.Come determinare se uno specifico elemento DOM è visibile o no?

Idealmente, la funzione deve restituire false se l'elemento o uno dei suoi antenati ha una regola CSS come display: none o visibility: hidden. Non è necessario preoccuparsi di overflow: hidden.

+2

Stai scherzando? hai appena provato a google/o/ricerca SOverflow "jquery-element-is-visible-or-not?" –

risposta

11

Utilizzare il selettore :visible con il metodo is.

if($('elementSelector').is(':visible')){ 
    //Element is visible 
} 
2

È possibile utilizzare il metodo is().

$('#element').is(':visible'); 
2

$('div:visible'); torneranno tutte visibili divs.

Inoltre, vale la pena notare questa sezione del jQuery 1.3.2 changelog:

In jQuery 1.3.2 un elemento è visibile se il suo browser-riferito offsetWidth o offsetHeight è maggiore di 0. Ciò significa che se CSS del vostro elemento display è "none", o uno qualsiasi dei suoi elementi genitore/antenato mostra "none", oppure se la larghezza dell'elemento è 0 e l'altezza dell'elemento è 0, allora un elemento verrà segnalato come nascosto.