O Twitter Bootstrap fornece classes para alternar conteúdo, consulte https://github.com/twbs/bootstrap/blob/3ee5542c990817324f0a07b97d01d1fe206fd8d6/less/utilities.less .
Sou completamente novo no jQuery e, depois de ler os documentos, cheguei a outra solução para combinar o Twitter Bootstrap + jQuery.
Primeiro, a solução para 'ocultar' e 'mostrar' um elemento (classe wsis-collapse) ao clicar em outro elemento (classe wsis-toggle) é usar .toggle .
jQuery(document).ready(function() {
jQuery(".wsis-toggle").click(function(){
jQuery(".wsis-collapse").toggle();
});
});
Você já ocultou o elemento .wsis-collapse
usando a classe Twitter Bootstrap (V3) .hidden
também:
.hidden {
display: none !important;
visibility: hidden !important;
}
Quando você clica em .wsis-toggle
, o jQuery está adicionando um estilo embutido:
display: block
Por causa do !important
no Twitter Bootstrap, esse estilo embutido não tem efeito, portanto, precisamos remover a .hidden
classe, mas não recomendo .removeClass
! Porque quando o jQuery oculta algo novamente, ele também adiciona um estilo embutido:
display: none
Isso não é o mesmo que a classe .hidden do Twitter Bootstrap, que também é otimizada para AT (leitores de tela). Portanto, se queremos mostrar a div oculta, precisamos nos livrar da .hidden
classe do Twitter Bootstrap, para nos livrarmos das declarações importantes, mas se a ocultarmos novamente, queremos que a .hidden
classe volte novamente! Podemos usar [.toggleClass] [3] para isso.
jQuery(document).ready(function() {
jQuery(".wsis-toggle").click(function(){
jQuery(".wsis-collapse").toggle().toggleClass( "hidden" );
});
});
Dessa forma, você continua usando a classe oculta toda vez que o conteúdo é oculto.
A .show
classe em TB é realmente a mesma que o estilo embutido do jQuery, ambos 'display: block'
. Mas se a .show
classe em algum momento for diferente, você simplesmente adiciona essa classe:
jQuery(document).ready(function() {
jQuery(".wsis-toggle").click(function(){
jQuery(".wsis-collapse").toggle().toggleClass( "hidden show" );
});
});