Esto se está volviendo molesto: cuando hago clic en un elemento en un menú desplegable de Bootstrap, el menú desplegable no se cierra. Lo tengo configurado para abrir una caja de luz de Facebox cuando haces clic en el elemento desplegable, pero hay un problema con él.
Lo que he probado
Cuando se hace clic en el elemento, intenté hacer esto:
$('.dropdown.open').removeClass('open');
$('.dropdown-menu').hide();
Eso lo oculta, pero luego, por alguna razón, no se volverá a abrir.
Como puede ver, realmente necesito que el menú desplegable se cierre, porque se ve horrible cuando permanece abierto (principalmente porque el z-index
del menú desplegable es más alto que la superposición del cuadro modal de Facebox.
Por que no estoy usando el cuadro modal incorporado de Bootstrap
Si se pregunta por qué no estoy usando el cuadro modal de aspecto agradable integrado en Bootstrap , es porque:
- No tiene forma de cargar contenido con AJAX.
- Tienes que escribir HTML cada vez para el modal; con Facebox puedes hacer algo simple:
$.facebox({ajax:'/assets/ajax/dialogs/dialog?type=block-user&id=1234567'});
- Utiliza animaciones CSS3 para animar (que se ve muy bien) pero en navegadores que no son CSS3 simplemente se muestra, lo que no se ve tan bien; Facebox usa JavaScript para aparecer, por lo que funciona en todos los navegadores.
fuente
.dropdown('toggle')
cierra el menú desplegable pero también lo desactiva para que no se abra de nuevo. ¡No sé de qué sirve eso!open
clase funciona, pero no se actualizaaria-expanded
. Siempre es mejor usar la API cuando sea posible.Probé la mayoría de las opciones de aquí, pero ninguna de ellas funcionó para mí. (Lo
$('.dropdown.open').removeClass('open');
ocultó, pero si pasaba el mouse antes de hacer clic en cualquier otra cosa, aparecía nuevamente.así que terminé haciéndolo con un
$("body").trigger("click")
fuente
<body>
, ¿cierra el menú desplegable?Bootstrap 4 (octubre de 2018):
fuente
Esto se puede hacer sin escribir código JavaScript agregando el atributo data-toggle = "dropdown" en la etiqueta de anclaje como se muestra a continuación:
fuente
Solo necesita
$('.dropdown.open').removeClass('open');
eliminar la segunda línea que oculta el menú desplegable.fuente
Esto es lo que funcionó para mí:
fuente
La respuesta seleccionada no funcionó para mí, pero creo que se debe a la versión más nueva de Bootstrap. Terminé escribiendo esto:
Con suerte, eso será útil para otra persona en el futuro.
fuente
¡Prueba esto!
O
Siempre me funciona.
fuente
Por qué usar mi método, porque si el usuario sale del div, este método le permite al usuario un cierto retraso antes de que los submenús desaparezcan. Es como usar el complemento superfish.
1) Primera descarga de hover intent javascript
Enlace aquí: Hover intent javascript
2) Aquí está mi código para ejecutar
fuente
fuente
La lectura de la documentación y el uso de JavaScript se puede hacer mediante el método de alternancia:
Puede leerlo en: http://getbootstrap.com/javascript/#dropdowns-methods
fuente
Intente abrir HTML con Bootstrap Modal, uso este código:
y el enlace es así:
fuente
Aquí está mi solución sobre cómo cerrar el menú desplegable del botón y alternar el botón:
Donde "esto" es un contenedor global del grupo de botones.
fuente
Bootstrap 4.1:
fuente
esto funcionó para mí, tenía una barra de navegación y varios menús desplegables.
fuente
La forma más sencilla de hacer esto es: agrega una etiqueta oculta:
luego, cada vez que desee ocultar el menú desplegable, llame a:
fuente
No sé si esto ayudará a alguien (tal vez sea demasiado específico para mi caso y no para esta pregunta) pero para mí esto funcionó:
fuente
Después de hacer clic:
fuente
Use class = "dropdown-toggle" en la etiqueta de anclaje, luego, cuando haga clic en la etiqueta de anclaje, se cerrará el menú desplegable de arranque.
fuente
Oye, este simple truco de jQuery debería ayudar.
fuente
La forma más fácil:
fuente
puede usar este código en su controlador de eventos actual
en mi escenario utilicé cuando se completó la llamada ajax
fuente
Seleccionar por atributo es la forma más lenta. Aquí está la solución más rápida para ocultar el menú desplegable abierto:
o use lo siguiente, si el menú desplegable no es el siguiente elemento secundario (busque el control desplegable principal más cercano):
fuente
Es posible que se haya agregado en retrospectiva (aunque esa característica no está documentada , incluso en Bootstrap 4.3.1), pero simplemente puede llamarla con un
hide
parámetro. Solo asegúrese de llamarlo en el elemento conmutador. Al igual que:Por supuesto, esto también funciona a la inversa con
show
.fuente