J'ai une navigation plus ou moins standard 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>
Il s'effondre normalement sur les appareils plus petits. Cliquer sur le bouton de menu développe le menu mais si je clique (ou touche d'ailleurs) sur un lien de menu, le menu reste ouvert. Que dois-je faire pour le refermer?
html
css
twitter-bootstrap
navigation
Paranoïa
la source
la source
Réponses:
Le paramètre par défaut de Bootstrap est de garder le menu ouvert lorsque vous cliquez sur un élément de menu. Vous pouvez remplacer manuellement ce comportement en appelant
.collapse('hide');
l'élément jQuery que vous souhaitez réduire.la source
Juste pour partager cela à partir de solutions sur GitHub, c'était la réponse populaire:
https://github.com/twbs/bootstrap/issues/9013#issuecomment-39698247
Ceci est connecté au document, vous n'avez donc pas à le faire sur ready () (vous pouvez ajouter dynamiquement des liens à votre menu et cela fonctionnera toujours), et il n'est appelé que si le menu est déjà développé. Certaines personnes ont signalé un clignotement étrange à l'endroit où le menu s'ouvre puis se ferme immédiatement avec un autre code qui ne vérifie pas que le menu a la classe «in».
[UPDATE 2014-11-04] apparemment lors de l'utilisation de sous-menus, ce qui précède peut causer des problèmes, donc ce qui précède a été modifié pour:
la source
collapse
c'est une méthode définie par bootstrap et attachée à l'objet jQuery ... vraisemblablement, ils le réutilisent à des fins multiples (accordéon, barre de navigation, etc.): getbootstrap.com/javascript / # collapse-usageChange ça:
pour ça:
Ce simple changement a fonctionné pour moi.
Réf: https://github.com/twbs/bootstrap/issues/9013
la source
.in
à la fin de ladata-target
valeur:data-target=".navbar-collapse.in"
. Du commentaire de cette réponse: stackoverflow.com/a/21797534/89818J'ai eu le même problème mais causé par l'inclusion de deux fois
bootstrap.js
et desjquery.js
fichiers.En un seul clic, l'événement a été traité deux fois par les deux instances de jquery. L'un fermé et l'autre ouvert la bascule.
la source
Cela aiderait à gérer la liste déroulante dans la barre de navigation
la source
J'ai / ai eu des problèmes similaires avec Bootstrap 4, alpha-6 et la réponse de Joakim Johansson ci-dessus m'a mis dans la bonne direction. Aucun javascript requis. Mettre data-target = ". Navbar-collapse" et data-toggle = "collapse" dans la balise div à l'intérieur de la navigation, mais entourant les liens / boutons, a fonctionné pour moi.
la source
Je sais que cette question concerne Bootstrap 3, mais si vous recherchez une solution pour Bootstrap 4 , faites simplement ceci:
la source
$(".navbar-nav li a:not('.dropdown-toggle')") .on('click', function () { $('.navbar-collapse').collapse('hide'); }
J'ai eu le même problème, j'utilisais
jQuery-1.7.1
etbootstrap 3.2.0
. J'ai changé ma version jQuery pour la dernièrejquery-1.11.2
version ( ) et tout fonctionne bien.la source
J'ai fait
la source
Bien que la solution publiée plus tôt pour modifier l'élément de menu lui-même, comme ci-dessous, fonctionne lorsque le menu est sur un petit appareil, elle a un effet secondaire lorsque le menu est en pleine largeur et développé, cela peut entraîner le glissement d'une barre de défilement horizontale sur votre éléments de menu . Les solutions javascript n'ont pas cet effet secondaire.
(désolé d'avoir répondu comme ça, je voulais ajouter un commentaire à cette réponse, mais il semble que je n'ai pas suffisamment de crédit pour faire des remarques)
la source
la source
Si vous souhaitez remplacer manuellement ce comportement en appelant .collapse ('hide') dans une directive angulaire, voici le code:
fichier javascript:
Html:
la source
Veuillez vous assurer que vous utilisez la dernière version de bootstrap js. J'étais confronté au même problème et la simple mise à niveau du fichier bootstrap.js à partir de bootstrap-3.3.6 a fait la magie.
la source
Si vous voulez que votre navigation bascule uniquement lorsqu'elle est utilisée sur un écran mobile, le simple fait d'ajouter
data-toggle="collapse"
etdata-target="#navbar"
à vos éléments fonctionnera sur l'écran mobile, mais vous donnera un scintillement étrange lorsque vous cliquez sur un écran de bureau. Les solutions jQuery ne fonctionnent pas bien si vous êtes dans un environnement Aurelia ou Angular.La meilleure solution pour moi était de créer un attribut personnalisé qui écoute la requête multimédia correspondante et ajoute l'
data-toggle="collapse"
attribut si vous le souhaitez:<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
L'attribut personnalisé avec Aurelia ressemble à ceci:
la source
J'ai trouvé qu'après beaucoup de difficultés, d'essais et d'erreurs, la meilleure solution pour moi sur jsfiddle. Lien vers l'inspiration sur jsfiddle.net . J'utilise navbar navbar-fixed-top de bootstrap avec repli et bascule hamburger. Voici ma version sur jsfiddle: jsfiddle Scrollspy navbar . Je n'obtenais que les fonctionnalités de base en utilisant les instructions sur getbootsrap.com. Pour moi, le problème était principalement dans les directions vagues et js recommandées par le site getbootstrap. La meilleure partie était que l'ajout de ce bit supplémentaire de js (qui inclut une partie de ce qui est mentionné dans les fils ci-dessus) a résolu plusieurs problèmes de Scrollspy pour moi, notamment:
REMARQUE: Dans le code js ci-dessous (à partir du deuxième lien jsfiddle dans mon message):
topMenu = $ ("# myScrollspy"),
... la valeur "myScrollspy" doit correspondre à l'id = "" dans votre HTML comme ceci ...
Bien sûr, vous pouvez modifier cette valeur pour la valeur que vous souhaitez.
la source
Tout ce dont vous avez besoin est data-target = ". Navbar-collapse" dans le bouton, rien d'autre.
la source
<a/>
mais ça n'a pas fonctionné avec<NavLink/>
, ça s'effondre mais ça<NavLink/>
ne marche plus, des idées pourquoi?C'est le code qui a fonctionné pour moi:
la source
J'ai eu le même problème, assurez-vous que bootstrap.js est inclus dans votre page html. Dans mon cas, le menu s'est ouvert mais ne s'est pas fermé. Dès que j'ai inclus le fichier bootstrap js, tout a fonctionné.
la source
Simple Essayez de créer une fonction en javascript pour la classe de réduction déroulante.
Exemple:
JS :
Accrochez cette fonction à
onClick
des œuvres simples pour moi.la source
J'ai eu le même problème mais le mien ne restait pas ouvert, il s'ouvrirait / se fermerait rapidement, j'ai trouvé que jquery-1.11.1.min.js se chargeait avant bootstrap.min.js. J'ai donc inversé l'ordre de ces 2 fichiers et corrigé mon menu. Fonctionne parfaitement maintenant. J'espère que ça aide
la source
Le problème peut être que vous utilisez des versions obsolètes de bootstrap ou jquery, OU que vous appelez plus d'une version dans votre balisage.
Gardez simplement les dernières versions, vous n'avez besoin que d'une seule référence. Résout le problème.
la source
vous voudrez peut-être simplement vous assurer que vous chargez votre ATF jQuery et Bootstrap.min.js. Votre navigation est la première chose à afficher sur la page, donc si vous avez vos scripts au bas de votre HTML, vous perdez toute fonctionnalité JavaScript.
la source
J'ai eu le même problème uniquement sur mobile mais pour une application Angular et c'est ce que j'ai fait:
app.component.html
app.component.ts
J'espère que ça aide :)
la source
Mon menu n'est pas une barre de navigation standard, mais j'ai réussi à réduire automatiquement le mien, en utilisant une fonction "onclick" et un ".click ()".
la source