Controlla, usando jQuery, se un elemento è 'display: none' o blocca al clic


240

Voglio controllare e ordinare gli elementi nascosti. È possibile trovare tutti gli elementi con attributo displaye valore none?

Risposte:


543

Puoi usare : visible per elementi visibili e : hidden per scoprire elementi nascosti. Gli elementi nascosti hanno l' displayattributo impostato su none.

hiddenElements = $(':hidden');
visibleElements = $(':visible');

Per controllare un elemento particolare.

if($('#yourID:visible').length == 0)
{

}

Gli elementi sono considerati visibili se consumano spazio nel documento. Gli elementi visibili hanno una larghezza o altezza maggiore di zero, Riferimento

Puoi anche usare is () con:visible

if(!$('#yourID').is(':visible'))
{

}

Se vuoi controllare il valore di display allora puoi usare css ()

if($('#yourID').css('display') == 'none')
{

}

Se si utilizza display, displaypossono essere presenti i seguenti valori .

display: nessuno

display: in linea

blocco di visualizzazione

display: voce di elenco

display: blocco in linea

Controllare l'elenco completo dei possibili displayvalori qui .

Per controllare la proprietà di visualizzazione con JavaScript

var isVisible = document.getElementById("yourID").style.display == "block";
var isHidden = document.getElementById("yourID").style.display == "none"; 

bene, nel mio scenario, ogni elemento ha un ID, quindi il trucco funziona per me :)
Nicholas Francis

2
@NicholasFrancis, ho aggiornato la mia risposta per scoprire tutti gli elementi nascosti.
Adil,

Controlla anche i CSS in linea. Ho display: block;scritto CSS in linea proveniente da jquery. non riesco a verificarlo con il tuo metodo. aiutami.
Gaurav Manral,

JQuery è stato aggiunto e si accede all'elemento dopo essere stato aggiunto a DOM? Puoi mostrarmi il codice? Sarebbe meglio fare una demo su jsfiddle.net
Adil,

Cos'è l'equiv di JavaScript?
TheBlackBenzKid

56
$("element").filter(function() { return $(this).css("display") == "none" });

7
+1: in realtà è più utile della risposta accettata per la domanda posta , poiché funzionerà anche se è presente un elemento padre style="display: none;". Le risposte utilizzano :visiblee :hiddenfalliranno se si desidera la visibilità di un elemento specifico e un elemento padre viene nascosto poiché quei selettori restituiscono la visibilità complessiva sulla pagina (che non era la domanda posta).
Gone Coding

Funziona quando si esegue il test di unione in ambiente DOM JS.
b01,

Per un plug-in di tabulazione, si stava impostando visibility: 'hidden';in CSS, quindi il controllo è finito anche controllando:$(this).css('visibility') != 'hidden'
phyatt

30

Sì, è possibile utilizzare la funzione css. Il seguito cercherà tutti i div, ma puoi modificarlo per qualsiasi elemento tu abbia bisogno

$('div').each(function(){

    if ( $(this).css('display') == 'none')
    {
       //do something
    }
});

13

Usa questa condizione:

if (jQuery(".profile-page-cont").css('display') == 'block'){
    // Condition 
}

11

Esistono due metodi in jQuery per verificare la visibilità:

$("#selector").is(":visible")

e

$("#selector").is(":hidden")

È inoltre possibile eseguire comandi in base alla visibilità nel selettore;

$("#selector:visible").hide()

o

$("#selector:hidden").show()

6
Nota: questo non restituirà l'attributo visibile specifico degli elementi selezionati, come pone la domanda, poiché :visibledipende anche dalla visibilità dell'antenato padre. Se un antenato è display: nonetutto discendente non sarà visibile indipendentemente dallo displaystato.
Gone Coding

10
$('#selector').is(':visible');

3
Nota: questo non restituirà l'attributo visibile specifico degli elementi selezionati, come pone la domanda, poiché :visibledipende anche dalla visibilità dell'antenato padre. Se un antenato è display: nonetutto discendente non sarà visibile indipendentemente dallo displaystato.
Gone Coding
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.