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-collapseusando a classe Twitter Bootstrap (V3) .hiddentambé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 !importantno Twitter Bootstrap, esse estilo embutido não tem efeito, portanto, precisamos remover a .hiddenclasse, 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 .hiddenclasse do Twitter Bootstrap, para nos livrarmos das declarações importantes, mas se a ocultarmos novamente, queremos que a .hiddenclasse 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 .showclasse em TB é realmente a mesma que o estilo embutido do jQuery, ambos 'display: block'. Mas se a .showclasse 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" );
});
});