Tengo una navegación más o menos estándar de bootstrap 3
<body data-spy="scroll" data-target=".navbar-collapse">
<!-- ---------- Navigation ---------- -->
<div class="navbar navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
</button>
<a class="navbar-brand" href="index.html"> <img src="#"></a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="#home">Home</a></li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
<li><a href="#four">Four</a></li>
</ul>
</div>
</div>
</div>
Se colapsa normalmente en dispositivos más pequeños. Al hacer clic en el botón de menú se expande el menú, pero si hago clic (o toco) en un enlace de menú, el menú permanece abierto. ¿Qué tengo que hacer para cerrarlo de nuevo?
html
css
twitter-bootstrap
navigation
Paranoia
fuente
fuente
Respuestas:
La configuración predeterminada de Bootstrap es mantener el menú abierto cuando hace clic en un elemento del menú. Puede anular manualmente este comportamiento llamando a
.collapse('hide');
al elemento jQuery que desea contraer.fuente
Solo para compartir esto de las soluciones en GitHub, esta fue la respuesta popular:
https://github.com/twbs/bootstrap/issues/9013#issuecomment-39698247
Esto está conectado al documento, por lo que no tiene que hacerlo en ready () (puede agregar dinámicamente enlaces a su menú y seguirá funcionando), y solo se llama si el menú ya está expandido. Algunas personas han informado de un parpadeo extraño donde se abre el menú y luego se cierra inmediatamente con otro código que no verificó que el menú tuviera la clase "en".
[ACTUALIZACIÓN 2014-11-04] aparentemente cuando se usan submenús, lo anterior puede causar problemas, por lo que lo anterior se modificó a:
fuente
collapse
es un método definido por bootstrap y adjunto al objeto jQuery ... presumiblemente, lo reutilizan para múltiples propósitos (acordeón, barra de navegación, etc.): getbootstrap.com/javascript / # collapse-useCambia esto:
a esto:
Este simple cambio funcionó para mí.
Ref: https://github.com/twbs/bootstrap/issues/9013
fuente
.in
al final deldata-target
valor:data-target=".navbar-collapse.in"
. Del comentario en esta respuesta: stackoverflow.com/a/21797534/89818Tuve el mismo problema pero causado por incluir dos veces
bootstrap.js
yjquery.js
archivos.Con un solo clic, el evento fue procesado dos veces por ambas instancias jquery. Uno cerró y otro abrió la palanca.
fuente
Esto ayudaría a manejar el menú desplegable en la barra de navegación
fuente
Tengo / tuve problemas similares con Bootstrap 4, alpha-6, y la respuesta anterior de Joakim Johansson me inició en la dirección correcta. No se requiere javascript. Poner data-target = ". Navbar-collapse" y data-toggle = "collapse" en la etiqueta div dentro del navegador, pero que rodea los enlaces / botones, funcionó para mí.
fuente
Sé que esta pregunta es para Bootstrap 3, pero si está buscando una solución para Bootstrap 4 , simplemente haga esto:
fuente
$(".navbar-nav li a:not('.dropdown-toggle')") .on('click', function () { $('.navbar-collapse').collapse('hide'); }
Tuve el mismo problema, estaba usando
jQuery-1.7.1
ybootstrap 3.2.0
. Cambié mi versión de jQuery a la últimajquery-1.11.2
versión ( ) y todo funciona bien.fuente
yo hice
fuente
Aunque la solución publicada anteriormente para cambiar el elemento del menú en sí, como a continuación, funciona cuando el menú está en un dispositivo pequeño, tiene un efecto secundario cuando el menú está en ancho completo y expandido, esto puede resultar en una barra de desplazamiento horizontal deslizándose sobre su elementos de menú . Las soluciones de JavaScript no tienen este efecto secundario.
(perdón por responder así, quería agregar un comentario a esa respuesta, pero parece que no tengo suficiente crédito para hacer comentarios)
fuente
fuente
En caso de que desee anular manualmente este comportamiento llamando a .collapse ('hide') dentro de una directiva angular, aquí está el código:
archivo javascript:
HTML:
fuente
Asegúrese de estar utilizando la última versión de bootstrap js. Estaba enfrentando el mismo problema y solo actualizar el archivo bootstrap.js desde bootstrap-3.3.6 hizo la magia.
fuente
Si solo desea alternar su navegación cuando se usa en una pantalla móvil, simplemente agregue
data-toggle="collapse"
ydata-target="#navbar"
elementos funcionará en la pantalla móvil, pero le dará un parpadeo extraño al hacer clic en una pantalla de escritorio. Las soluciones jQuery no funcionan bien si se encuentra en un entorno Aurelia o Angular.La mejor solución para mí fue crear un atributo personalizado que escuche la consulta de medios correspondiente y agregue el
data-toggle="collapse"
atributo si lo desea:<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
El atributo personalizado con Aurelia se ve así:
fuente
Descubrí que después de mucha lucha, prueba y error, la mejor solución para mí en jsfiddle. Enlace a la inspiración en jsfiddle.net . Estoy usando la barra de navegación de bootstrap navbar-fixed-top con colapso y alternar hamburguesa. Aquí está mi versión en jsfiddle: jsfiddle Scrollspy navbar . Solo estaba obteniendo funcionalidad básica usando las instrucciones en getbootsrap.com. Para mí, el problema estaba principalmente en las direcciones vagas y recomendadas por el sitio getbootstrap. La mejor parte fue que agregar este bit extra de js (que incluye algo de lo que se menciona en los hilos anteriores) resolvió varios problemas de Scrollspy para mí, que incluyen:
NOTA: En el código js que se muestra a continuación (desde el segundo enlace jsfiddle en mi publicación):
topMenu = $ ("# myScrollspy"),
... el valor "myScrollspy" debe coincidir con el id = "" en su HTML así ...
Por supuesto, puede cambiar ese valor al valor que desee.
fuente
Todo lo que necesita es data-target = ". Navbar-collapse" en el botón, nada más.
fuente
<a/>
pero no funcionó<NavLink/>
, se derrumba pero,<NavLink/>
ya no funciona, ¿alguna idea de por qué?Este es el código que funcionó para mí:
fuente
Tuve el mismo problema, asegúrese de que bootstrap.js esté incluido en su página html. En mi caso, el menú se abrió pero no se cerró. Tan pronto como incluí el archivo bootstrap js, todo funcionó.
fuente
Simple Intente hacer una función en javascript para la clase de colapso desplegable.
Ejemplo:
JS :
Enganche esta función a
onClick
trabajos simples para mí.fuente
Tuve el problema similar pero el mío no se mantuvo abierto, se abriría / cerraría rápidamente, descubrí que tenía jquery-1.11.1.min.js cargando antes de bootstrap.min.js. Así que invertí el orden de esos 2 archivos y arreglé mi menú. Corre perfectamente ahora. Espero eso ayude
fuente
El problema podría ser que está utilizando versiones desactualizadas de bootstrap o jquery, O está llamando a más de una versión en su marcado.
Solo guarde las últimas versiones, solo necesita una referencia. Resuelve el problema
fuente
es posible que desee asegurarse de que está cargando su jQuery y Bootstrap.min.js ATF. Su navegación es lo primero que se representa en la página, por lo que si tiene sus scripts en la parte inferior de su HTML, está perdiendo cualquier funcionalidad de JavaScript.
fuente
Tuve el mismo problema solo en dispositivos móviles, pero para una aplicación angular y esto es lo que hice:
app.component.html
app.component.ts
Espero eso ayude :)
fuente
Mi menú no es un estándar de la barra de navegación, pero logré colapsar el mío automáticamente, usando una función "onclick" y un ".click ()".
fuente