Digamos que eu crie um elemento HTML como este,
<div id="my-div" class="hidden">Hello, TB3</div>
<div id="my-div" class="hide">Hello, TB4</div>
<div id="my-div" class="d-none">Hello, TB4</div>
Como eu poderia mostrar e ocultar esse elemento HTML do jQuery / Javascript.
JavaScript:
$(function(){
$("#my-div").show();
});
Resultado: (com qualquer um destes).
Gostaria que os elementos acima estivessem ocultos.
Qual é a maneira mais simples de ocultar o elemento usando o Bootstrap e mostrá-lo usando o jQuery?
javascript
jquery
html
css
twitter-bootstrap
psylosss
fonte
fonte
Respostas:
A resposta certa
Bootstrap 4.x
O Bootstrap 4.x usa a nova
.d-none
classe . Em vez de usar qualquer um.hidden
, ou.hide
se você estiver usando o Bootstrap 4.x, use.d-none
.$("#myId").removeClass('d-none');
$("#myId").addClass('d-none');
$("#myId").toggleClass('d-none');
(graças ao comentário de Fangming)
Bootstrap 3.x
Primeiro, não use
.hide
! Use.hidden
. Como outros já disseram,.hide
está obsoleto,Segundo, use .toggleClass () , .addClass () e .removeClass () da jQuery
$("#myId").removeClass('hidden');
$("#myId").addClass('hidden');
$("#myId").toggleClass('hidden');
Não use a classe css
.show
, ela possui um caso de uso muito pequeno. As definições deshow
,hidden
einvisible
estão nos docs .fonte
fadeIn()
). Portanto, use a classe emcollapse
vez dehidden
. E depois, claro, não há necessidade para a utilizaçãoremoveClass
,addClass
etc..hidden-xs-up
. v4-alpha.getbootstrap.com/layout/responsive-utilities/… Também háhidden
atributo HTML5. v4-alpha.getbootstrap.com/content/reboot/....hide()
não é da.hide
classe de inicialização . O método jQuery funciona bem, mas não é o caminho de inicialização. As bibliotecas de bootstrap dependem da inclusão da classe .hidden no elemento para determinar que não existe. O jQuery não adiciona isso - a menos que você o corte como aqui: stackoverflow.com/a/27439371/124486 ; nesse caso, você pode quebrar outras coisas específicas do jQuery.Simplesmente:
Ou se você, de alguma forma, deseja que a classe ainda esteja lá:
fonte
Use o bootstrap .collapse em vez de .hidden
Posteriormente no JQuery, você pode usar .show () ou .hide () para manipulá-lo
fonte
Esta solução está obsoleta. Use a melhor solução votada.
A
hide
classe é útil para manter o conteúdo oculto no carregamento da página.Minha solução para isso é durante a inicialização, alterne para hide do jquery:
Então
show()
ehide()
deve funcionar normalmente.fonte
Outra maneira de lidar com esse aborrecimento é criar sua própria classe CSS que não define o! Important no final da regra, assim:
e usado assim:
e agora o jQuery oculta funciona
fonte
.hidden { display: none !important; visibility: hidden !important; }
O método @ dustin-graham descrito é como eu também o faço. Lembre-se também de que o bootstrap 3 agora usa "hidden" em vez de "hide" conforme a documentação deles no getbootstrap . Então, eu faria algo assim:
Então, sempre que usar o jQuery
show()
ehide()
métodos, não haverá conflito.fonte
hidden
classe e tentaria fazershow()
no jQuery, e nada aconteceria. Sua solução corrige isso com tanta facilidade, e eu não pensei nisso.Inicie o elemento com:
E então, use o evento que você deseja mostrá-lo, como tal:
O caminho mais simples a seguir, acredito.
fonte
HTML:
Javascript:
fonte
Eu gosto de usar o toggleClass:
fonte
switch
não é totalmente necessário.// você nem precisa definir o
#my-div
.hide
nor!important
, basta colar / repetir a alternância na função de evento.fonte
Recentemente, tive esse problema ao atualizar de 2,3 para 3,1; nossas animações jQuery ( slideDown ) foram interrompidas porque estávamos ocultando os elementos no modelo de página. Seguimos o caminho da criação de versões com espaçamento de nome das classes Bootstrap que agora possuem a regra feia ! Importante .
fonte
A resposta de Razz é boa se você estiver disposto a reescrever o que fez.
Estava com o mesmo problema e trabalhou com o seguinte:
Jogue fora quando o Bootstrap vier com uma correção para esse problema.
fonte
.removeClass()
ou.addClass()
?.removeClass()
funciona sobre o conjunto? Você não poderia simplesmente ligar #$(this).removeClass('show')
No bootstrap 4, você pode usar a
d-none
classe para ocultar um elemento completamente. https://getbootstrap.com/docs/4.0/utilities/display/fonte
Atualização : A partir de agora, eu uso
.collapse
e$('.collapse').show()
.Para Bootstrap 4 Alpha 6
Para o Bootstrap 4, você precisa usar
.hidden-xs-up
.https://v4-alpha.getbootstrap.com/layout/responsive-utilities/#available-classes
Há também o
hidden
atributo HTML5.https://v4-alpha.getbootstrap.com/content/reboot/#html5-hidden-attribute
Há também o
.invisible
que afeta o layout.https://v4-alpha.getbootstrap.com/utilities/invisible-content/
fonte
hide e hidden são preteridos e removidos posteriormente, não existem mais em novas versões. Você pode usar as classes d-none / d-sm-none / invisível etc, dependendo de suas necessidades. A provável razão pela qual eles foram removidos é porque oculto / oculto é um pouco confuso no contexto CSS. Em CSS, ocultar (oculto) é usado para visibilidade, não para exibição. visibilidade e exibição são coisas diferentes.
Se você precisar de uma classe para visibilidade: oculta, precisará de uma classe invisível nos utilitários de visibilidade.
Verifique abaixo os utilitários de visibilidade e exibição:
https://getbootstrap.com/docs/4.1/utilities/visibility/
https://getbootstrap.com/docs/4.1/utilities/display/
fonte
Use o seguinte trecho para o Bootstrap 4, que estende o jQuery:
Inclua o arquivo após a inclusão do jQuery.
Use-o usando a sintaxe
$ (). hideShow ('ocultar');
$ (). hideShow ('show');
espero que vocês achem útil. :-)
fonte
Bootstrap, JQuery, namespaces ... O que há de errado com um simples:
Você pode criar uma pequena função auxiliar, compatível com o KISS:
fonte
Com base nas respostas acima, adicionei minhas próprias funções e isso ainda não entra em conflito com as funções jquery disponíveis, como .hide (), .show (), .toggle (). Espero que ajude.
fonte
Resolvi meu problema editando o arquivo CSS do Bootstrap, consulte o documento:
.ocultar:
.hidden é o que devemos usar agora, mas na verdade é:
O jQuery "fadeIn" não funcionará por causa da "visibilidade".
Portanto, para o Bootstrap mais recente, o .hide não está mais em uso, mas ainda está no arquivo min.css. então eu deixei .hidden AS IS e apenas removi o "! important" da classe ".hide" (que deveria ser preterida de qualquer maneira). mas você também pode substituí-lo em seu próprio CSS. Eu só queria que todo o meu aplicativo agisse da mesma maneira, então mudei o arquivo CSS do Bootstrap.
E agora o jQuery "fadeIn ()" funciona.
A razão pela qual eu fiz isso versus as sugestões acima é porque, quando você "removeClass ('. Hide')", o objeto é imediatamente exibido e você pula a animação :)
Espero que tenha ajudado outros.
fonte
☀️ A resposta mais correta
No Bootstrap 4, você oculta o elemento:
🛑 Então, claro, você pode literalmente mostrá-lo com:
💓 Mas se você fizer da maneira semântica, transferindo a responsabilidade do Bootstrap para o jQuery, poderá usar outras sutilezas do jQuery, como o fading:
fonte
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 .
Você já ocultou o elemento
.wsis-collapse
usando a classe Twitter Bootstrap (V3).hidden
também:Quando você clica em
.wsis-toggle
, o jQuery está adicionando um estilo embutido: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: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.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:fonte