Compruebe, utilizando jQuery, si un elemento es 'display: none' o bloque al hacer clic


240

Quiero verificar y ordenar los elementos que están ocultos. ¿Es posible encontrar todos los elementos con atributo displayy valor none?

Respuestas:


543

Puede usar : visible para elementos visibles y : hidden para descubrir elementos ocultos. Estos elementos ocultos tienen displayatributo establecido en none.

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

Para verificar un elemento en particular.

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

}

Los elementos se consideran visibles si consumen espacio en el documento. Los elementos visibles tienen un ancho o alto mayor que cero, Referencia

También puedes usar is () con:visible

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

}

Si desea verificar el valor de la pantalla, puede usar css ()

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

}

Si está utilizando mostrar los siguientes valores displaypueden tener.

pantalla: ninguno

pantalla: en línea

bloqueo de pantalla

display: elemento de lista

pantalla: bloque en línea

Consulte la lista completa de posibles displayvalores aquí .

Para verificar la propiedad de visualización con JavaScript

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

bueno, en mi escenario, cada elemento tiene una identificación, así que el truco funciona para mí :)
Nicholas Francis

2
@NicholasFrancis, he actualizado mi respuesta para descubrir todos los elementos que están ocultos.
Adil

¿Verifica también css en línea? Tengo css display: block;escrito en línea proveniente de jquery. No puedo verificarlo con su método. ayuadame.
Gaurav Manral

¿Se agrega jQuery y está accediendo al elemento después de ser agregado a DOM? ¿Me puede mostrar el código? Sería mejor hacer una demostración en jsfiddle.net
Adil

¿Qué es el equivalente de JavaScript?
TheBlackBenzKid

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

77
+1: Esto es realmente más útil que la respuesta aceptada para la pregunta formulada , ya que esto funcionará incluso si un elemento padre lo ha hecho style="display: none;". Las respuestas usan :visibley :hiddenfallarán si desea una visibilidad específica del elemento y un elemento primario está oculto ya que esos selectores devuelven la visibilidad general en la página (que no era la pregunta que se hizo).
Gone Coding

Esto funciona cuando se ejecuta unite test en el entorno JS DOM.
b01

Para un complemento de tabulación, se estaba configurando visibility: 'hidden';en css, por lo que la verificación también terminó comprobando:$(this).css('visibility') != 'hidden'
phyatt

30

Sí, puedes usar la función css. El siguiente buscará todos los divs, pero puede modificarlo para cualquier elemento que necesite

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

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

13

Use esta condición:

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

11

Hay dos métodos en jQuery para verificar la visibilidad:

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

y

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

También puede ejecutar comandos basados ​​en la visibilidad en el selector;

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

o

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

66
Nota: esto no devolverá el atributo visible específico de los elementos seleccionados, como se hace en la pregunta, ya que :visibletambién depende de la visibilidad del ancestro principal. Si un antepasado es display: nonetodos los descendientes no serán visibles independientemente del displayestado.
Se fue la codificación

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

3
Nota: esto no devolverá el atributo visible específico de los elementos seleccionados, como se hace en la pregunta, ya que :visibletambién depende de la visibilidad del ancestro principal. Si un antepasado es display: nonetodos los descendientes no serán visibles independientemente del displayestado.
Se fue la codificación
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.