Eu tenho um div com esta classe:
.news{
width:710px;
float:left;
border-bottom:1px #000000 solid;
font-weight:bold;
display:none;
}
E eu gostaria que, com alguns métodos jQuery, remova essa exibição: none; (para que a div seja exibida) e depois adicione-a novamente (para que a div fique sombria).
Como eu posso fazer isso? Felicidades
$(".news").show()
? "para que a div fique sombria" ... você quer dizer que ela desaparecerá ??$(".news").show()
funciona! O mesmo$(".news").hide()
!!! Graças;)$('.news').toggle();
Respostas:
Para ocultar o
div
ou
e para mostrar o
div
:ou
fonte
O jQuery fornece:
Você pode mostrar e ocultar facilmente o (s) elemento (s).
fonte
.show()
não removedisplay: none
, mas colocadisplay: block
ouinline
depende do elemento, e pode quebrar o layout se o elemento usar umdisplay
estilo incomum .element{display:none;}
no seu css, mas no seu js, também useelement.hide()
ao mesmo tempo. Isso permitirá que ashow()
função funcione.Então, deixe-me dar um exemplo de código:
O link será o gatilho para mostrar a div quando clicada. Portanto, seu Javascript será:
É quase sempre melhor deixar o jQuery manipular o estilo para ocultar e mostrar elementos.
Editar: vejo que as pessoas acima recomendam o uso
.show
e.hide
para isso..toggle
permite que você faça as duas coisas com apenas um efeito. Então isso é legal.fonte
toggle
função. Muitas vezes, se você precisar clicar em algo e mostrá-lo, também deseja que a funcionalidade oculte.Em JavaScript:
No jQuery:
fonte
Use alternar para mostrar e ocultar.
Veja o exemplo de trabalho em http://jsfiddle.net/jNqTa/
fonte
.toggle()
está obsoleto desde o jQuery 1.9.eu sugiro adicionar uma classe para exibir / ocultar elementos:
e use jquery's .toggleClass () para mostrar / ocultar o elemento:
fonte
A única maneira de remover um "display: none" embutido via css-api do jQuery é redefinindo-o com a string vazia (
null
NÃO funciona entre !!).De acordo com a documentação do jQuery, esta é a maneira geral de "remover" uma propriedade de estilo embutido definida uma vez.
$("#mydiv").css("display","");
ou
$("#mydiv").css({display:""});
deve fazer o truque corretamente.
IMHO, existe um método ausente no jQuery que pode ser chamado de "mostrar" ou "revelar" que, em vez de apenas definir outra propriedade de estilo embutido, desativa o valor de exibição corretamente, conforme descrito acima. Ou talvez
hide()
deva armazenar o valor inline inicial eshow()
restaurar esse ...fonte
As funções .show () e .hide () do jQuery são provavelmente a sua melhor aposta.
fonte
Você não está nos dando muitas informações, mas em geral isso pode ser uma solução:
fonte
$(".news").show()
e$(".news").hide()
;)Por alguma razão, alternar não funcionou para mim e recebi o erro
uncaught type error toggle is not a function
ao inspecionar o elemento no navegador. Então, usei o código a seguir e ele começou a funcionar para mim.Arquivo de script jquery usado
jquery-2.1.3.min.js
.fonte
Se você possui muitos elementos
.hide()
ou.show()
gostaria de gastar muitos recursos para fazer o que deseja - mesmo se usar.hide(0)
ou.show(0)
- o parâmetro 0 é a duração da animação.Ao contrário de Prototype.js
.hide()
e.show()
métodos que apenas usavam para manipular o atributo de exibição do elemento, a implementação do jQuery é mais complexa e não é recomendada para um grande número de elementos.Nesse caso, você provavelmente deve tentar
.css('display','none')
ocultar e.css('display','')
mostrar.css('display','block')
deve ser evitado, especialmente se você estiver trabalhando com elementos embutidos, linhas da tabela (na verdade, qualquer elemento da tabela) etc.fonte
Considerando o comentário de lolesque como melhor resposta, você pode adicionar um atributo ou uma classe para mostrar / ocultar elementos com propriedades de exibição diferentes do que normalmente possui, se o site precisar de compatibilidade com versões anteriores, sugiro criar uma classe e adicionar / remover para mostrar / exibe o elemento
Substitua o bloco embutido pelo método de exibição preferido de sua escolha e use jquerys addclass https://api.jquery.com/addclass/ e removeclass https://api.jquery.com/removeclass/ em vez de mostrar / ocultar, se estiver para trás compatibilidade não é problema, você pode usar atributos como este.
E use jquerys attr () http://api.jquery.com/attr/ para mostrar e ocultar o elemento.
Seja qual for o método que você preferir, você poderá implementar facilmente animações css3 ao exibir / ocultar elementos dessa maneira
fonte
O uso de
show()
adiçõesdisplay:block
no lugar dasdisplay:hide
quais pode quebrar as coisas.Para evitar isso, você pode ter uma classe com propriedade
display:none
e alternar essa classe para esse elemento comtoggleClass()
.Nenhuma das respostas mencionou isso.
fonte