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?
Evan Carroll
La respuesta correcta
Bootstrap 4.x
Bootstrap 4.x usa el nuevo .d-none
clase. En lugar de usar cualquiera .hidden
o .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 clasecollapse
en lugar dehidden
. Y luego, por supuesto, no hay necesidad de usarremoveClass
,addClass
etc.– 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 hayhidden
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
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
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
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
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.
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