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 simple de ocultar elementos usando Bootstrap y mostrarlos usando jQuery?
javascript
jquery
html
css
twitter-bootstrap
psylosss
fuente
fuente
Respuestas:
La respuesta correcta
Bootstrap 4.x
Bootstrap 4.x usa la nueva
.d-none
clase . En lugar de usar cualquiera.hidden
, o.hide
si está usando Bootstrap 4.x use.d-none
.$("#myId").removeClass('d-none');
$("#myId").addClass('d-none');
$("#myId").toggleClass('d-none');
(gracias al comentario de Fangming)
Bootstrap 3.x
Primero, ¡no lo uses
.hide
! Uso.hidden
. Como otros han dicho,.hide
está en desuso,En segundo lugar, use .toggleClass () , .addClass () y .removeClass () de jQuery.
$("#myId").removeClass('hidden');
$("#myId").addClass('hidden');
$("#myId").toggleClass('hidden');
No use la clase css
.show
, tiene un caso de uso muy pequeño. Las definiciones deshow
,hidden
yinvisible
están en los documentos .fuente
fadeIn()
). Por lo tanto, use la clase encollapse
lugar dehidden
. Y luego, por supuesto, no hay necesidad de utilizarremoveClass
,addClass
etc..hidden-xs-up
. v4-alpha.getbootstrap.com/layout/responsive-utilities/… También hay unhidden
atributo HTML5. v4-alpha.getbootstrap.com/content/reboot/….hide()
no es la.hide
clase de bootstrap . El método jQuery funciona bien, pero no es la forma de arranque. Las bibliotecas de 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.Simplemente:
O si de alguna manera quieres que la clase siga ahí:
fuente
Use bootstrap .collapse en lugar de .hidden
Más adelante en JQuery puedes usar .show () o .hide () para manipularlo
fuente
Esta solución está en desuso. Use la solución más votada.
La
hide
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 jquery's hide:
Entonces
show()
yhide()
debería funcionar como normal.fuente
Otra forma de abordar esta molestia es crear su propia clase CSS que no establezca lo importante al final de la regla, así:
y se usa así:
y ahora los trabajos de ocultación de jQuery
fuente
.hidden { display: none !important; visibility: hidden !important; }
El método que describió @ 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 getbootstrap . Entonces haría algo como esto:
Luego, siempre que use jQuery
show()
y loshide()
métodos, no habrá conflicto.fuente
hidden
clase y luego trataría de hacerloshow()
en jQuery, y no pasaría nada. Su solución soluciona esto tan fácilmente, y no lo pensé.Inicie el elemento con como tal:
Y luego, use el evento que desea mostrar, como tal:
La forma más sencilla de ir, creo.
fuente
HTML:
Javascript:
fuente
Me gusta usar el toggleClass:
fuente
switch
no es completamente necesario.// ni siquiera tiene que establecer el
#my-div
.hide
nor!important
, solo pegue / repita la alternancia en la función de evento.fuente
Recientemente me encontré con esto al actualizar de 2.3 a 3.1; animaciones nuestra jQuery ( slideDown ) rompieron porque estábamos poniendo ocultar los elementos de la plantilla de página. Seguimos la ruta de la creación de versiones espaciadas por nombre de las clases Bootstrap que ahora llevan la regla fea ! Importante .
fuente
La respuesta de Razz es buena si estás dispuesto a reescribir lo que has hecho.
Estaba en el mismo problema y lo resolvió con lo siguiente:
Tíralo cuando Bootstrap viene con una solución para este problema.
fuente
.removeClass()
o.addClass()
?.removeClass()
ya no funciona en el set? ¿No podrías simplemente llamar$(this).removeClass('show')
En bootstrap 4 puedes usar
d-none
class para ocultar un elemento por completo. https://getbootstrap.com/docs/4.0/utilities/display/fuente
Actualización : De ahora en adelante, uso
.collapse
y$('.collapse').show()
.Para Bootstrap 4 Alpha 6
Para Bootstrap 4 tienes que usar
.hidden-xs-up
.https://v4-alpha.getbootstrap.com/layout/responsive-utilities/#available-classes
También hay un
hidden
atributo HTML5.https://v4-alpha.getbootstrap.com/content/reboot/#html5-hidden-attribute
También hay
.invisible
que afecta el diseño.https://v4-alpha.getbootstrap.com/utilities/invisible-content/
fuente
hide y hidden están en desuso y luego se eliminan, ya no existen en las nuevas versiones. Puede usar las clases d-none / d-sm-none / invisible, etc., según sus necesidades. La razón probable por la que se eliminaron es porque hidden / hide es un poco confuso en el contexto CSS. En CSS, ocultar (oculto) se utiliza para la visibilidad, no para mostrar. La visibilidad y la visualización son cosas diferentes.
Si necesita una clase de visibilidad: oculta, entonces necesita una clase invisible de las utilidades de visibilidad.
Verifique a continuación las utilidades de visibilidad y visualización:
https://getbootstrap.com/docs/4.1/utilities/visibility/
https://getbootstrap.com/docs/4.1/utilities/display/
fuente
Use el siguiente fragmento de código para Bootstrap 4, que extiende jQuery:
Incluya el archivo después de que se haya incluido jQuery.
Úselo usando la sintaxis
$ (). hideShow ('hide');
$ (). hideShow ('show');
Espero que les sea útil. :-)
fuente
Bootstrap, JQuery, espacios de nombres ... Lo que está mal con un simple:
Puede crear una pequeña función auxiliar, compatible con KISS:
fuente
Según las respuestas anteriores, acabo de agregar mis propias funciones y esto no entra en conflicto con las funciones jquery disponibles como .hide (), .show (), .toggle (). Espero eso ayude.
fuente
Resolví mi problema editando el archivo CSS de Bootstrap, vea su documento:
.esconder:
.hidden es lo que se supone que debemos usar ahora, pero en realidad es:
El jQuery "fadeIn" no funcionará debido a la "visibilidad".
Entonces, para el último Bootstrap, .hide ya no está en uso, pero todavía está en el archivo min.css. así que dejé .hidden TAL CUAL y simplemente eliminé "! important" de la clase ".hide" (que se supone que está en desuso de todos modos). pero también puede anularlo en su propio CSS, solo quería que toda mi aplicación actuara igual, así que cambié el archivo CSS de Bootstrap.
Y ahora funciona jQuery "fadeIn ()".
La razón por la que he hecho esto en comparación con las sugerencias anteriores es porque cuando "removeClass ('. Hide')" el objeto se muestra inmediatamente y omite la animación :)
Espero que haya ayudado a otros.
fuente
☀️ La respuesta más correcta
En Bootstrap 4 ocultas el elemento:
🛑 Entonces, seguro, puedes mostrarlo literalmente con:
💓 Pero si lo hace de forma semántica, transfiriendo la responsabilidad de Bootstrap a jQuery, entonces puede usar otras sutilezas de jQuery como desvanecimiento:
fuente
Twitter Bootstrap proporciona clases para alternar contenido, consulte https://github.com/twbs/bootstrap/blob/3ee5542c990817324f0a07b97d01d1fe206fd8d6/less/utilities.less .
Soy completamente nuevo en jQuery, y después de leer sus documentos, encontré otra solución para combinar Twitter Bootstrap + jQuery.
Primero, la solución para 'ocultar' y 'mostrar' un elemento (clase wsis-collapse) al hacer clic en otro elemento (clase wsis-toggle), es usar .toggle .
Ya ha ocultado el elemento
.wsis-collapse
utilizando la clase Twitter Bootstrap (V3).hidden
también:Cuando hace clic en
.wsis-toggle
, jQuery agrega un estilo en línea:Debido a que
!important
en Twitter Bootstrap, este estilo en línea no tiene ningún efecto, por lo que debemos eliminar la.hidden
clase, ¡pero no lo recomendaré.removeClass
para esto! Porque cuando jQuery va a ocultar algo nuevamente, también agrega un estilo en línea:Esto no es lo mismo que la clase .hidden de Twitter Bootstrap, que también está optimizada para AT (lectores de pantalla). Entonces, si queremos mostrar el div oculto, debemos deshacernos de la
.hidden
clase de Twitter Bootstrap, por lo que nos deshacemos de las declaraciones importantes, pero si lo ocultamos nuevamente, ¡queremos.hidden
recuperar la clase nuevamente! Podemos usar [.toggleClass] [3] para esto.De esta manera, sigue usando la clase oculta cada vez que se oculta el contenido.
La
.show
clase en TB es en realidad la misma que el estilo en línea de jQuery, ambos'display: block'
. Pero si la.show
clase en algún momento será diferente, entonces simplemente agrega esta clase también:fuente