Ich habe eine mehr oder weniger Standardnavigation von 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>
Bei kleineren Geräten fällt es normalerweise zusammen. Durch Klicken auf die Menüschaltfläche wird das Menü erweitert. Wenn ich jedoch auf einen Menülink klicke (oder ihn berühre), bleibt das Menü geöffnet. Was muss ich tun, um es wieder zu schließen?
html
css
twitter-bootstrap
navigation
Paranoia
quelle
quelle
Antworten:
Die Standardeinstellung von Bootstrap besteht darin, das Menü geöffnet zu halten, wenn Sie auf einen Menüpunkt klicken. Sie können dieses Verhalten manuell überschreiben, indem Sie
.collapse('hide');
das jQuery-Element aufrufen, das Sie reduzieren möchten.quelle
Nur um dies von Lösungen auf GitHub zu teilen, war dies die beliebte Antwort:
https://github.com/twbs/bootstrap/issues/9013#issuecomment-39698247
Dies ist mit dem Dokument verbunden, sodass Sie es nicht auf ready () ausführen müssen (Sie können Links dynamisch an Ihr Menü anhängen, und es funktioniert weiterhin), und es wird nur aufgerufen, wenn das Menü bereits erweitert ist. Einige Leute haben ein seltsames Blinken gemeldet, bei dem das Menü geöffnet und dann sofort mit einem anderen Code geschlossen wird, der nicht überprüft hat, ob das Menü die Klasse "in" enthält.
[UPDATE 2014-11-04] Anscheinend kann das oben Genannte bei Verwendung von Untermenüs Probleme verursachen, daher wurde das oben Gesagte geändert in:
quelle
collapse
ist eine Methode, die durch Bootstrap definiert und an das jQuery-Objekt angehängt wird ... vermutlich verwenden sie dies für mehrere Zwecke (Akkordeon, Navigationsleiste usw.): getbootstrap.com/javascript / # Zusammenbruch-NutzungÄndere das:
dazu:
Diese einfache Änderung hat bei mir funktioniert.
Ref: https://github.com/twbs/bootstrap/issues/9013
quelle
.in
am Ende desdata-target
Wertes hinzufügen :data-target=".navbar-collapse.in"
. Aus dem Kommentar in dieser Antwort: stackoverflow.com/a/21797534/89818Ich hatte das gleiche Problem, wurde aber durch das Einfügen von zweimal
bootstrap.js
undjquery.js
Dateien verursacht.Mit einem einzigen Klick wurde das Ereignis von beiden jquery-Instanzen zweimal verarbeitet. Einer schloss und einer öffnete den Schalter.
quelle
Dies würde bei der Handhabung Dropdown in der Navigationsleiste helfen
quelle
Ich habe / hatte ähnliche Probleme mit Bootstrap 4, Alpha-6 und Joakim Johanssons obige Antwort hat mich in die richtige Richtung geführt. Kein Javascript erforderlich. Das Einfügen von data-target = ". Navbar-Collapse" und data-toggle = "Collapse" in das div-Tag innerhalb des Navis, aber um die Links / Schaltflächen herum, hat bei mir funktioniert.
quelle
Ich weiß, dass diese Frage für Bootstrap 3 gilt, aber wenn Sie nach einer Lösung für Bootstrap 4 suchen , tun Sie dies einfach:
quelle
$(".navbar-nav li a:not('.dropdown-toggle')") .on('click', function () { $('.navbar-collapse').collapse('hide'); }
Ich hatte das gleiche Problem, das ich benutzte
jQuery-1.7.1
undbootstrap 3.2.0
. Ich habe meine jQuery-Version auf die neueste (jquery-1.11.2
) Version geändert und alles funktioniert gut.quelle
Ich tat
quelle
Obwohl die zuvor veröffentlichte Lösung zum Ändern des Menüelements selbst (siehe unten) funktioniert, wenn sich das Menü auf einem kleinen Gerät befindet, hat sie einen Nebeneffekt, wenn das Menü in voller Breite und erweitert ist. Dies kann dazu führen, dass eine horizontale Bildlaufleiste über Ihr Menü verschoben wird Menüpunkte . Die Javascript-Lösungen haben diesen Nebeneffekt nicht.
(Entschuldigung für die Antwort auf diese Weise, wollte dieser Antwort einen Kommentar hinzufügen, aber anscheinend habe ich nicht genügend Kredit, um Bemerkungen zu machen)
quelle
quelle
Wenn Sie dieses Verhalten manuell überschreiben möchten, indem Sie .collapse ('hide') innerhalb der Direktive eines Winkels aufrufen, finden Sie hier den folgenden Code:
Javascript-Datei:
Html:
quelle
Bitte stellen Sie sicher, dass Sie die neueste Bootstrap JS-Version verwenden. Ich hatte das gleiche Problem und nur das Aktualisieren der Datei bootstrap.js von bootstrap-3.3.6 hat die Magie ausgelöst.
quelle
Wenn Sie möchten, dass Ihre Navigation nur umschaltet, wenn Sie sie auf einem mobilen Bildschirm verwenden, funktioniert das Hinzufügen
data-toggle="collapse"
und Hinzufügendata-target="#navbar"
von Elementen auf dem mobilen Bildschirm, gibt Ihnen jedoch ein seltsames Flimmern, wenn Sie auf einen Desktop-Bildschirm klicken. Die jQuery-Lösungen funktionieren nicht gut, wenn Sie sich in einer Aurelia- oder Angular-Umgebung befinden.Die beste Lösung für mich war, ein benutzerdefiniertes Attribut zu erstellen, das die entsprechende Medienabfrage abhört und das
data-toggle="collapse"
Attribut bei Bedarf hinzufügt :<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
Das benutzerdefinierte Attribut mit Aurelia sieht folgendermaßen aus:
quelle
Ich fand, dass nach viel Kampf, Versuch und Irrtum die beste Lösung für mich auf jsfiddle. Link zur Inspiration auf jsfiddle.net . Ich benutze Bootstraps Navbar Navbar-Fixed-Top mit Collapse und Hamburger Toggle. Hier ist meine Version auf jsfiddle: jsfiddle Scrollspy navbar . Ich habe nur grundlegende Funktionen erhalten, indem ich die Anweisungen auf getbootsrap.com verwendet habe. Für mich lag das Problem hauptsächlich in den vagen Richtungen und js, die von der getbootstrap-Site empfohlen wurden. Das Beste daran war, dass das Hinzufügen dieses zusätzlichen Js (das einige der in den obigen Threads erwähnten Elemente enthält) mehrere Scrollspy-Probleme für mich löste, darunter:
HINWEIS: Im unten gezeigten js-Code (über den zweiten jsfiddle-Link in meinem Beitrag):
topMenu = $ ("# myScrollspy"),
... der Wert "myScrollspy" muss mit der id = "" in Ihrem HTML wie folgt übereinstimmen ...
Natürlich können Sie diesen Wert in einen beliebigen Wert ändern.
quelle
Alles was Sie brauchen ist data-target = ". Navbar -apse" in der Schaltfläche, sonst nichts.
quelle
<a/>
aber es hat nicht funktioniert<NavLink/>
, es bricht zusammen,<NavLink/>
aber funktioniert es nicht mehr, irgendwelche Ideen warum?Dies ist der Code, der für mich funktioniert hat:
quelle
Ich hatte das gleiche Problem, stellen Sie sicher, dass bootstrap.js in Ihrer HTML-Seite enthalten ist. In meinem Fall wurde das Menü geöffnet, aber nicht geschlossen. Sobald ich die Bootstrap-JS-Datei eingefügt hatte, funktionierte einfach alles.
quelle
Einfach Versuchen Sie, eine Funktion in Javascript für die Dropdown-Kollapsklasse zu erstellen.
Beispiel:
JS :
Hängen Sie diese Funktion an
onClick
einfache Arbeiten für mich.quelle
Ich hatte das ähnliche Problem, aber meins würde nicht offen bleiben, es würde sich schnell öffnen / schließen. Ich stellte fest, dass jquery-1.11.1.min.js vor bootstrap.min.js geladen wurde. Also habe ich die Reihenfolge dieser 2 Dateien umgekehrt und mein Menü korrigiert. Läuft jetzt einwandfrei. Ich hoffe es hilft
quelle
Das Problem könnte sein, dass Sie veraltete Versionen von Bootstrap oder JQuery verwenden oder mehr als eine Version in Ihrem Markup aufrufen.
Behalten Sie einfach die neuesten Versionen, Sie benötigen nur die eine Referenz. Löst das Problem.
quelle
Möglicherweise möchten Sie nur sicherstellen, dass Sie Ihre ATF für jQuery und Bootstrap.min.js laden. Ihre Navigation ist das erste, was auf der Seite gerendert wird. Wenn Sie also Ihre Skripte am Ende Ihres HTML-Codes haben, verlieren Sie jegliche JavaScript-Funktionalität.
quelle
Ich hatte das gleiche Problem nur auf Mobilgeräten, aber für eine Angular-Anwendung, und dies habe ich getan:
app.component.html
app.component.ts
Ich hoffe es hilft :)
quelle
Mein Menü ist kein Standardmenü für die Navigationsleiste, aber ich habe es geschafft, mein Menü mithilfe einer "onclick" -Funktion und eines ".click ()" automatisch zu reduzieren.
quelle