Como verificar se um elemento está escondido em jQuery
- Método para verificar se um elemento está escondido em jQuery
-
Entenda o
:hiddenSelector em jQuery - Dicas rápidas para verificar se um elemento está escondido
Qualquer objeto no DOM pode ser escondido atribuindo sua propriedade CSS de display como none.
Método para verificar se um elemento está escondido em jQuery
Primeiro, criamos um elemento de cabeçalho <h1> e aplicamos a propriedade CSS inline para escondê-lo.
<h1 style="display:none;">Your text here</h1>
Em jQuery há dois filtros de visibilidade - :hidden e :visible selectors. Eles especificam se o elemento está oculto e visível, respectivamente. Ele pode ser facilmente verificado pelo método a seguir.
<script>
$(document).ready(function(){
//checks if document is ready
if($("h1").is(":hidden")){
alert("The heading is hidden.");
//your function here
}
if($("h1").is(":visible"){
alert("The heading is visible.");
}
});
</script>
Ele dá um alerta dizendo: The heading is hidden..
Nota: Se você colocar vários elementos com um sendo oculto e outro sendo visível, isso aciona tanto is(":visible") como is(":hidden").
Entenda o :hidden Selector em jQuery
O seletor :hidden identifica um elemento como oculto pelas seguintes razões:
- Possui propriedade CSS
displaycom um valor denone. - O elemento é um elemento de forma com
type="hidden". - Os valores de
heightewidthdo elemento são definidos explicitamente como 0. - O elemento pai é oculto.
Portanto, elementos com a propriedade visibility do CSS definida como hidden ou opacity como 0 são considerados visíveis em jQuery, pois ainda consomem espaço no DOM.
Alternativamente, para verificar a propriedade específica CSS do elemento para verificar se ele está escondido, podemos utilizar o seguinte método.
<script>
if ( $(h1).css('display') == 'none' || $(h1).css('opacity') == '0'){
alert("The heading is hidden.");
//your function here
}
</script>
Dicas rápidas para verificar se um elemento está escondido
jQuery não pode tirar vantagem do método nativo DOM querySelectorAll(). Ele também cria alguns problemas de desempenho, pois força o navegador a renderizar novamente a página para determinar a visibilidade. Assim, ao invés de utilizar elementos, você pode utilizar classes ou seletores CSS e então utilizar .find(":hidden").
<h1 style="display:none;">Your text here</h1>
<script>
$(document).ready(function(){
var hiddenHeadings = $("body").find(":hidden").is("h1");
if(hiddenHeadings.length > 0){
alert("There is atleast one heading hidden.");
}
});
</script>
Aqui, os hiddenHeadings podem ser acessados diretamente e podem ser operados.