jQuery: como verificar se um elemento está oculto? (explicação para iniciantes)

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que essa questão preocupa todo desenvolvedor frontend

\n\n

Imagine a situação: você está escrevendo uma página interativa com um menu suspenso, janela modal ou acordeão. O usuário clica em um botão, e o bloco deve aparecer ou desaparecer suavemente. Mas e se você acidentalmente tentar animar um elemento já oculto? Ou, ao contrário, mostrar algo que já está visível? O resultado — bugs, interface instável e usuários frustrados.

\n\n

É por isso que a pergunta "How do I check if an element is hidden in jQuery?" é uma das mais populares no Stack Overflow. Ela tem mais de mil respostas, e isso não é por acaso. Saber determinar corretamente a visibilidade de um elemento é uma habilidade básica que economizará horas de depuração.

\n\n

Neste artigo, vamos analisar detalhadamente como verificar se um elemento está oculto com jQuery. Você conhecerá as armadilhas, as diferenças entre display:none e visibility:hidden, e aprenderá a escrever código confiável. Vamos lá!

\n\n

Método .is(':hidden') — sua principal ferramenta

\n\n

A maneira mais simples e comum de verificar se um elemento está oculto é usar o método .is() com o pseudosseletor :hidden. O jQuery fornece isso nativamente.

\n\n

Como funciona

\n

O seletor :hidden no jQuery seleciona elementos que:

\n
    \n
  • Possuem a propriedade CSS display: none;
  • \n
  • São elementos do tipo <input type="hidden">;
  • \n
  • Possuem largura e altura iguais a zero (ex.: width: 0; height: 0);
  • \n
  • São descendentes de um pai oculto (herdam a invisibilidade).
  • \n
\n\n

Veja como é feita a verificação mais simples:

\n\n
// Verifica se o elemento com id="myDiv" está oculto\nif ($('#myDiv').is(':hidden')) {\n    console.log('Elemento oculto!');\n} else {\n    console.log('Elemento visível.');\n}
\n\n

Verificação de visibilidade com .is(':visible')

\n

Para a lógica inversa, use o seletor :visible:

\n\n
if ($('#myDiv').is(':visible')) {\n    console.log('Elemento visível na página.');\n}
\n\n

Ambas as abordagens funcionam rapidamente e são intuitivas. Mas há um detalhe: e se o elemento estiver oculto com visibility: hidden ou opacity: 0? O jQuery considera esses elementos como visíveis, o que muitas vezes surpreende os iniciantes.

\n\n

Armadilhas: visibility: hidden e opacity: 0

\n\n

Muitos desenvolvedores acreditam erroneamente que :hidden reage a qualquer forma de ocultar um elemento. Isso não é verdade.

\n\n

Exemplo com visibility: hidden

\n

A propriedade visibility: hidden torna o elemento invisível, mas ele ainda ocupa espaço na página. O jQuery considera esse elemento visível, pois suas dimensões não são zero.

\n\n
<div id="myBox" style="visibility: hidden;">Estou invisível, mas ocupo espaço</div>\n\n<script>\nconsole.log( $('#myBox').is(':hidden') );  // false\nconsole.log( $('#myBox').is(':visible') ); // true\n</script>
\n\n

Exemplo com opacity: 0

\n

O mesmo se aplica à transparência:

\n\n
<div id="transparentBox" style="opacity: 0;">Transparente, mas visível para o jQuery</div>\n\n<script>\nconsole.log( $('#transparentBox').is(':hidden') );  // false\n</script>
\n\n

Se o seu código usa fadeIn()/fadeOut() ou animação de transparência, a verificação padrão com :hidden vai falhar. Para esses casos, é necessário verificar a propriedade CSS específica.

\n\n

Como verificar visibility: hidden ou opacity: 0

\n\n

Quando você precisa saber se um elemento está oculto especificamente com essas propriedades, use .css():

\n\n

Verificação de visibility

\n
var isVisibilityHidden = ($('#myElement').css('visibility') === 'hidden');\nif (isVisibilityHidden) {\n    console.log('Elemento oculto via visibility');                

Blogs

Book Recommendations