¿Cómo puedo ocultar un elemento usando Twitter Bootstrap y mostrarlo usando jQuery?

5 minutos de lectura

avatar de usuario de psylosss
psicoloss

Digamos que creo un 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>

¿Cómo podría mostrar y ocultar ese elemento HTML de jQuery/JavaScript?

JavaScript:

$(function(){
  $("#my-div").show();
});

Resultado: (con cualquiera de estos).

Me gustaría que los elementos anteriores estén ocultos.

¿Cuál es la forma más sencilla de ocultar un elemento usando Bootstrap y mostrarlo usando jQuery?

  • Para mantener esta pregunta relevante, la modifiqué para que funcione en ambos Bootstraps, porque la respuesta es solo una diferencia en el nombre de la clase.

    – Evan Carroll

    29 de octubre de 2018 a las 1:30

Avatar de usuario de Evan Carroll
Evan Carroll

La respuesta correcta

Bootstrap 4.x

Bootstrap 4.x usa el nuevo .d-none clase. En lugar de usar cualquiera .hiddeno .hide si está usando Bootstrap 4.x use .d-none.

<div id="myId" class="d-none">Foobar</div>
  • Para mostrarlo: $("#myId").removeClass('d-none');
  • Para ocultarlo: $("#myId").addClass('d-none');
  • Para cambiarlo: $("#myId").toggleClass('d-none');

(gracias al comentario de Fangming)

Bootstrap 3.x

Primero, no uses .hide! Usar .hidden. Como han dicho otros, .hide es obsoleto,

.hide está disponible, pero no siempre afecta a los lectores de pantalla y está obsoleto a partir de v3.0.1

En segundo lugar, use jQuery’s .toggleClass(), .addClass() y .removeClass()

<div id="myId" class="hidden">Foobar</div>
  • Para mostrarlo: $("#myId").removeClass('hidden');
  • Para ocultarlo: $("#myId").addClass('hidden');
  • Para cambiarlo: $("#myId").toggleClass('hidden');

No uses la clase CSS .show, tiene un caso de uso muy pequeño. Las definiciones de show, hidden y invisible estan en el documentos.

// Classes
.show {
  display: block !important;
}
.hidden {
  display: none !important;
  visibility: hidden !important;
}
.invisible {
  visibility: hidden;
}

  • Muchas gracias, me preguntaba stackoverflow por algo como esto durante mucho tiempo para una respuesta simple. Gracias

    – Dil.

    27 de julio de 2015 a las 10:53

  • ¿Alguien tiene una idea de cuáles son los métodos: show() y hide() para entonces?

    – Lista de Verificación

    26 de abril de 2016 a las 5:11

  • Entonces no puedes animarlo (p. fadeIn()). Por lo tanto, use la clase collapse en lugar de hidden. Y luego, por supuesto, no hay necesidad de usar removeClass, addClassetc.

    – TheStoryCoder

    22 de agosto de 2016 a las 15:28


  • Para Bootstrap 4 tienes que usar .hidden-xs-up. v4-alpha.getbootstrap.com/layout/responsive-utilities/… También hay hidden Atributo HTML5. v4-alpha.getbootstrap.com/content/reboot/…

    – Cloe

    12 de junio de 2017 a las 1:05

  • @Kangur jQuery .hide() no es de bootstrap .hide clase. El método jQuery funciona bien, pero no es la forma de arranque. Las bibliotecas Bootstrap dependen de la inclusión de la clase .hidden en el elemento para determinar que no está allí. jQuery no agrega eso, a menos que lo piratee como aquí: stackoverflow.com/a/27439371/124486, en cuyo caso podría romper otras cosas específicas de jQuery.

    – Evan Carroll

    29 de diciembre de 2017 a las 18:16

Simplemente:

$(function(){
  $("#my-div").removeClass('hide');
});

O si de alguna manera quieres que la clase siga ahí:

$(function(){
  $("#my-div").css('display', 'block !important');
});

  • Aquí hay un complemento de jQuery que le permite usar .show() y .hide() incluso con las clases bootstrap ‘hidden’ y ‘hide’. gist.github.com/zimkies/8360181

    – zimkies

    10 de enero de 2014 a las 18:49

  • De acuerdo con la documentación de Bootstrap, .hide está disponible, pero no siempre afecta a los lectores de pantalla y está obsoleto a partir de la v3.0.1. Utilice .hidden o .sr-only en su lugar.

    – bjtilley

    20 de enero de 2014 a las 15:17

Avatar de usuario de Iván
ivan

Usa Bootstrap .collapse en lugar de .hidden.

Más adelante en jQuery puede usar .show() o .hide() para manipularlo.

  • ESTA es la respuesta correcta, la aceptada tiene !important y aunque es posible mostrarla mediante toggleClass, jquery .show y .slide no funcionarán con esa, pero funcionarán con esta. Gracias

    – Henlo

    31 de agosto de 2022 a las 19:47

Avatar de usuario de Dustin Graham
Dustin Graham

Esta solución está en desuso. Utilice la solución más votada.

El hide La clase es útil para mantener el contenido oculto en la carga de la página.

Mi solución a esto es durante la inicialización, cambie a la ocultación de jquery:

$('.targets').hide().removeClass('hide');

Entonces show() y hide() debería funcionar con normalidad.

Otra forma de abordar esta molestia es crear su propia clase CSS que no establezca el !importante al final de la regla, así:

.hideMe {
    display: none;
}

y usado así:

<div id="header-mask" class="hideMe"></div>

y ahora jQuery oculta obras

$('#header-mask').show();

  • Elude el problema que plantea el uso de clases de bootstrap. ¿Por qué rechazar esta solución corta y simple?

    – dbrin

    3 de febrero de 2015 a las 0:36

  • Porque esta solución breve y simple no responde a la pregunta que requiere específicamente el uso de clases de bootstrap3. Sin mencionar, aunque simple, .hidden en Bootstrap Se define como .hidden { display: none !important; visibility: hidden !important; }

    – Evan Carroll

    3 de febrero de 2015 a las 8:07

  • y ese es exactamente el problema, los métodos ocultar y mostrar de JQuery no funcionan bien con este css.

    – dbrin

    03/02/2015 a las 17:25

Avatar de usuario de MichaelJTaylor
migueltaylor

El método descrito por @dustin-graham es cómo lo hago yo también. Recuerde también que bootstrap 3 ahora usa “oculto” en lugar de “ocultar” según su documentación en obtener arranque. Así que haría algo como esto:

$(document).ready(function() {
    $('.hide').hide().removeClass('hide');
    $('.hidden').hide().removeClass('hidden');
});

Luego, cada vez que use jQuery show() y hide() métodos, no habrá conflicto.

  • Elude el problema que plantea el uso de clases de bootstrap. ¿Por qué rechazar esta solución corta y simple?

    – dbrin

    3 de febrero de 2015 a las 0:36

  • Porque esta solución breve y simple no responde a la pregunta que requiere específicamente el uso de clases de bootstrap3. Sin mencionar, aunque simple, .hidden en Bootstrap Se define como .hidden { display: none !important; visibility: hidden !important; }

    – Evan Carroll

    3 de febrero de 2015 a las 8:07

  • y ese es exactamente el problema, los métodos ocultar y mostrar de JQuery no funcionan bien con este css.

    – dbrin

    03/02/2015 a las 17:25

Avatar de usuario de Peter Mortensen
Pedro Mortensen

Inicie el elemento con como tal:

<div id='foo' style="display: none"></div>

Y luego, usa el evento que quieras mostrar, como tal:

$('#foo').show();

La forma más sencilla de hacerlo, creo.

¿Ha sido útil esta solución?