Estou usando o Twitter Bootstrap e noto que o jQuery show()
ou fadeIn()
não faz o elemento DOM marcado com a classe hidden
aparecer porque as funções do jQuery apenas removem a display: none
especificação. No entanto, o visibility
ainda está definido como hidden
.
Eu me pergunto qual é a melhor maneira possível de contornar isso?
- Remova a
hidden
classe do elemento - Altere a propriedade de visibilidade
- Sobrescrever a classe oculta em meu próprio css
Em particular, eu quero saber se consertar isso com jQuery ou css é melhor e por quê.
jquery
twitter-bootstrap
Lim H.
fonte
fonte
visibility: hidden
é do bootstrap responsivo.Respostas:
A classe css que você está procurando é
.collapse
. Isso define o elemento paradisplay: none;
Portanto, o uso
$('#myelement').show()
funcionará corretamente.ATUALIZAÇÃO: Bootstrap v3.3.6 atualizou .collapse de volta para:
fonte
.slideDown()
,.fadeIn()
etc..hidden
no Bootstrap é para coisas que você nunca quer que sejam exibidas..collapse
agora também definevisibility: hidden;
Isso fará desaparecer o seu elemento invisível e removerá a classe
http://jsfiddle.net/7qxVL/
Se você realmente não precisa que o elemento seja invisível (ou seja, ocupar o espaço), você pode querer redefinir .hidden (em seu css local, não altere a fonte de bootstrap, ou melhor ainda, em seu arquivo LESS local).
fonte
.hidden
para elementos que deseja exibir usando javascript. Use em seu.collapse
lugar.Aviso:
bootstrap 3.3.0 acabou de alterar .collapse para:
O que é uma alteração importante para jQuery.show (). Tive de reverter para inlining:
para continuar usando jQuery da seguinte maneira:
A única classe que consegui encontrar no bootstrap 3.3.0 para aplicar apenas 'display: none' é
fonte
.collapse('hide')
e em.collapse('show')
vez dos métodos jQuery. Você pode definir a visibilidade inicial diretamente no HTML por meio da classecollapse
(para ocultar) oucollapse in
(para mostrar). Consulte getbootstrap.com/javascript/#collapse .Eu tive o mesmo problema. Eu usei este patch:
Então eu tive outro problema, já que meu aplicativo gera novos elementos e os adiciona / adiciona. O que finalmente fiz foi depois de gerar o novo elemento que faço:
fonte
Para mim, foi porque o bootstrap está usando o
!important
hack para ocultar e ocultar de classe.Portanto, você não pode usar os
show()
métodos etc. fornecidos com jquery. Em vez disso, você precisa sobrescrever um código ainda mais horrível, sobrescrevendo o código hacky.! important é uma opção de último recurso e realmente não deve ser usado em uma biblioteca central como o bootstrap.
fonte
Isso funciona, mas vou tentar a primeira resposta e mudar as classes para
.collapse
.fonte