Embora essa pergunta tenha sido respondida várias vezes antes, pensei em adicionar uma resposta mais completa e sólida para futuros usuários. A resposta principal resolve o problema, mas acredito que talvez seja melhor conhecer / entender algumas das várias maneiras de mostrar / ocultar as coisas.
.
Alterando a exibição usando css ()
Era assim que costumava fazer até encontrar algumas dessas outras maneiras.
Javascript:
$("#element_to_hide").css("display", "none"); // To hide
$("#element_to_hide").css("display", ""); // To unhide
Prós:
- Esconde e esconde. É sobre isso.
Contras:
- Se você usar o atributo "display" para outra coisa, precisará codificar o valor do que era antes de ocultar. Então, se você tivesse "inline", teria que fazer
$("#element_to_hid").css("display", "inline"); contrário, voltará a "bloquear" ou o que mais for forçado.
- Presta-se a erros de digitação.
Exemplo: https://jsfiddle.net/4chd6e5r/1/
.
Alterando a exibição usando addClass () / removeClass ()
Ao configurar o exemplo para este, de fato encontrei algumas falhas nesse método que o tornam muito pouco confiável.
Css / Javascript:
.hidden {display:none}
$("#element_to_hide").addClass("hidden"); // To hide
$("#element_to_hide").removeClass("hidden"); // To unhide
Prós:
- Esconde .... às vezes. Consulte a p1 no exemplo.
- Depois de mostrar, ele voltará a usar o valor de exibição anterior .... às vezes. Consulte a p1 no exemplo.
- Se você quiser pegar todos os objetos ocultos, basta fazê-lo
$(".hidden").
Contras:
- Não oculta se o valor de exibição foi definido diretamente no html. Consulte p2 no exemplo.
- Não oculta se a exibição estiver definida em javascript usando css (). Consulte a página 3 no exemplo.
- Um pouco mais de código porque você precisa definir um atributo css.
Exemplo: https://jsfiddle.net/476oha8t/8/
.
Alterando a exibição usando alternar ()
Javascript:
$("element_to_hide").toggle(); // To hide and to unhide
Prós:
- Sempre funciona.
- Permite que você não precise se preocupar com o estado anterior à mudança. O uso óbvio para isso é para um botão .... alternar.
- Curto e simples.
Contras:
- Se você precisar saber em qual estado ele está alternando para fazer algo não diretamente relacionado, será necessário adicionar mais código (uma instrução if) para descobrir em que estado está.
- Semelhante ao con anterior, se você deseja executar um conjunto de instruções que contém o toggle () com o objetivo de ocultar, mas não sabe se ele já está oculto, é necessário adicionar uma verificação (uma instrução if) para descobrir primeiro e se já estiver oculto, pule. Consulte a p1 do exemplo.
- Relacionado com os 2 contras anteriores, usar toggle () para algo que está oculto ou exibido especificamente pode ser confuso para outras pessoas que leem seu código, pois não sabem para que lado irão alternar.
Exemplo: https://jsfiddle.net/cxcawkyk/1/
.
Alterando a exibição usando hide () / show ()
Javascript:
$("#element_to_hide").hide(); // To hide
$("#element_to_hide").show(); // To show
Prós:
- Sempre funciona.
- Depois de mostrar, ele voltará a usar o valor de exibição anterior.
- Você sempre saberá em qual estado está trocando, para que:
- não é necessário adicionar instruções if para verificar a visibilidade antes de alterar os estados, se o estado for importante.
- não confundirá outras pessoas que leem seu código sobre o estado para o qual você está mudando, se o estado é importante.
- Intuitivo.
Contras:
- Se você deseja imitar uma alternância, primeiro verifique o estado e depois mude para o outro estado. Use alternar () em vez disso. Consulte a p2 do exemplo.
Exemplo: https://jsfiddle.net/k0ukhmfL/
.
No geral, eu diria que o melhor é hide () / show (), a menos que você precise especificamente que seja uma alternância. Espero que você tenha achado essas informações úteis.
return falseemonclick?