Ich habe Bootstrap v3.
Ich benutze das class="active"
auf meinem navbar
und es schaltet nicht, wenn ich Menüpunkte drücke. Ich weiß, wie man das macht jQuery
und eine Klickfunktion erstellt, aber ich denke, diese Funktionalität sollte in Bootstrap enthalten sein? Vielleicht handelt es sich also um ein JavaScript-Problem?
Hier ist mein Header mit meinen js / css / bootstrap-Dateien, die ich aufgenommen habe:
<!-- Bootstrap CSS -->
<link rel="stylesheet" href= "/bootstrap/css/bootstrap.css" />
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<link rel="stylesheet" href= "/stylesheets/styles.css" />
<!--jQuery -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<!-- Bootstrap JS -->
<script src="/bootstrap/js/bootstrap.min.js"></script>
<script src="/bootstrap/js/bootstrap-collapse.js"></script>
<script src="/bootstrap/js/bootstrap-transition.js"></script>
Hier ist mein navbar
Code:
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbarCollapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/index.php">MyBrand</a>
</div>
<div class="collapse navbar-collapse navbarCollapse">
<ul class="nav navbar-nav navbar-right">
<li class="active">
<a href="/index.php">Home</a>
</li>
<li>
<a href="/index2.php"> Links</a>
</li>
<li>
<a href="/history.php">About</a>
</li>
<li>
<a href="/contact.php">Contact</a>
</li>
<li>
<a href="/login.php">Login</a>
</li>
</ul>
</div>
</div>
</nav>
Richte ich das richtig ein?
(Nicht verwandt, aber möglicherweise verwandt? Wenn das Menü mobil wird, klicke ich auf die Menüschaltfläche und es wird ausgeblendet. Wenn Sie es erneut drücken, wird es jedoch nicht wieder ausgeklappt. Dieses Problem mit dem anderen bedeutet also ein falsches JavaScript-Setup vielleicht?)
javascript
html
twitter-bootstrap
twitter-bootstrap-3
TheLettuceMaster
quelle
quelle
active
Klasse selbst hinzufügen, wenn Ihre Anwendung den HTML- Code generiert.Antworten:
Sie haben die minimierte Bootstrap-JS-Datei und die Plugins zum Reduzieren / Übergang eingefügt, während in den Dokumenten Folgendes angegeben ist:
und
Das könnte also Ihr Problem für das Minimierungsproblem sein.
Für die aktive Klasse müssen Sie es selbst verwalten, aber es sind nur ein oder zwei Zeilen.
Bootstrap 3:
Bootply: http://www.bootply.com/IsRfOyf0f9
Bootstrap 4:
quelle
href
(kein Hash, sondern eine andere Anfrage senden)?active
dasnav
Element standardmäßig eine Klasse haben .Hier war meine Lösung zum Wechseln aktiver Seiten
quelle
<script>
und</script> tags at the bottom of the html file before the
</ body> `tag liegen (vorausgesetzt, Sie haben alles in einer HTML-Datei).Dies hat bei mir perfekt funktioniert, da "window.location.pathname" auch Daten vor dem tatsächlichen Seitennamen enthält, z. B. directory / page.php. Der eigentliche Navbar-Link wird also nur aktiviert, wenn die URL diesen Link enthält.
quelle
Mit der Version 3.3.4 von Bootstrap können Sie auf langen HTML-Seiten auf Abschnitte der Seite verweisen. nach Klasse oder ID, um den aktiven Navigationsleisten-Link mit Spy-Scroll mit dem Body-Element zu verwalten:
Das Datenziel ist ein Div mit der ID = "Spy-Scroll-ID".
Dies sollte Links aktivieren, indem Sie auf klicken, ohne dass Javascript-Funktionen erforderlich sind, und wird automatisch jeden Link aktivieren, wenn Sie durch die entsprechenden verknüpften Abschnitte der Seite scrollen, was ein js onclick () nicht tut.
quelle
Alles, was Sie tun müssen, ist einfach data-toggle = "tab" zu Ihrem Link in der Bootstrap-Navigationsleiste hinzuzufügen:
quelle
Wenn Sie keine Ankerlinks verwenden, können Sie Folgendes verwenden:
quelle
Mit Bootstrap 4 können Sie Folgendes verwenden:
quelle
Diese elegante Lösung hat den Trick für mich getan. Neue Ideen / Vorschläge sind willkommen.
Sie können die "Geschwister ()" - Methode von jQuery verwenden, um nur das Element, auf das zugegriffen wird, aktiv und seine Geschwister inaktiv zu halten.
quelle
Ich habe heute damit zu kämpfen, Data-Tgle hat nur funktioniert, wenn ich auf einer einzelnen Seite arbeite.
Ich verwende Ajax nicht, um den Inhalt zu laden, den ich tatsächlich für andere Seiten poste, sodass das erste JS-Skript ebenfalls nutzlos war. Ich löse es mit diesen Zeilen:
quelle
Ich hoffe, dies wird helfen, dieses Problem zu lösen.
quelle
Ich hatte einige Probleme damit, einen dynamisch generierten Listeneintrag zu verwenden - WordPress Stack.
Fügte dies hinzu und es funktionierte:
Wird es im laufenden Betrieb tun.
quelle
Ich benutze das. Es ist kurz, elegant und leicht zu verstehen.
quelle
Die Klasse "active" wird nicht sofort mit Bootstrap verwaltet. In Ihrem Fall können Sie sehen, da Sie PHP verwenden:
Wie füge ich class = 'active' zum HTML-Menü mit PHP hinzu
um Ihnen bei einer Methode zu helfen, die es hauptsächlich automatisiert.
quelle
Wenn Sie das Bootstrap-Menü für Mobilgeräte nach dem Klicken auf ein Element deaktivieren möchten, können Sie es verwenden
quelle
Ich verwende das nackte Bootstrap-Thema. Hier ist der Beispiel-Navigationscode. Beachten Sie den Klassennamen des Elements -> .nav -, auf den im Java-Skript verwiesen wird.
Fügen Sie auf der Ansichtsseite (oder teilweise) Folgendes hinzu: Javascript, dies muss jedes Mal ausgeführt werden, wenn die Seite geladen wird.
Haml View Snippet ->
Stellen Sie im Javascript-Debugger sicher, dass der Wert des Attributs 'href' mit window.location.pathname übereinstimmt. Dies unterscheidet sich geringfügig von der Lösung von @Zitrax, mit der ich mein Problem beheben konnte.
quelle
Für
AngularJS
können Sieng-class
mit einer Funktion wie dieser verwenden:HTML ->
Und Controller
Wenn Sie $ location verwenden, gibt es keinen Hash. Sie können also die erforderliche Zeichenfolge mithilfe von $ location aus der URL extrahieren
Folgendes funktioniert nicht in allen Fällen ->
Die Verwendung einer Bereichsvariablen wie der folgenden funktioniert nur, wenn Sie darauf
$state.transitionTo
klicken. Wenn der Übergang jedoch mit oder window.location oder manuellem Aktualisieren der URL erfolgt, wird der Tab-Wert nicht aktualisiertquelle
Fügen Sie dieses JavaScript zu Ihrer Haupt-JS-Datei hinzu.
quelle
Ich musste einen Schritt nach vorne machen, weil meine Dateinamen nicht mit meinen Navigationsleisten-Titeln übereinstimmten. dh mein erster Navigationsleisten-Link war HOME, aber der Dateiname ist index ..
Also schnapp dir einfach den Pfadnamen und passe ihn an.
Offensichtlich ist dies ein grobes Beispiel und könnte effizienter sein, aber es ist ein sehr kundenspezifischer Bedarf.
quelle
Bootstrap 4-Lösung, die für mich funktioniert hat:
Dies funktioniert nur, wenn href location.pathname enthält !
Wenn Sie Ihre Site auf Ihrem eigenen PC testen (mit wamp, xampp, lamp usw.) und sich Ihre Site in einem Unterordner befindet, lautet Ihr Pfad tatsächlich "/somefolder/something.php" verwirrt.
Ich würde vorschlagen, wenn Sie nicht sicher sind, folgenden Code zu verwenden, damit Sie sicherstellen können, dass der richtige location.pathname lautet :
quelle
Die nächste Antwort ist für diejenigen, die ein mehrstufiges Menü haben:
quelle
Als jemand, der kein Javascript kennt, ist hier eine PHP-Methode, die für mich funktioniert und leicht zu verstehen ist. Meine gesamte Navigationsleiste befindet sich in einer PHP-Funktion, die sich in einer Datei mit allgemeinen Komponenten befindet, die ich von meinen Seiten einbinde. So habe ich zum Beispiel auf meiner 'index.php'-Seite ... `
Dann habe ich in der 'my_common_includes.php' ...
quelle
Für Bootstrap 4 müssen Sie das
li
Element auf aktive Klassen ausrichten. Dazu müssen Sie das Elternteil des findena
. Die 'Hitbox' vona
ist so groß wie die,li
aber aufgrund des sprudelnden Ereignisses in JS erhalten Sie dasa
Ereignis zurück. Sie müssen es also manuell zu seinem übergeordneten Element hinzufügen.quelle
Ich habe ungefähr die ersten 5 Lösungen und verschiedene Variationen davon ausprobiert, aber sie haben bei mir nicht funktioniert.
Endlich habe ich es mit diesen beiden Funktionen zum Laufen gebracht.
quelle
Wenn Sie header.php für jede Seite für den Navigationscode verwenden, funktioniert die Abfrage nicht, die aktive wird angewendet und dann entfernt. Eine einfache Lösung lautet wie folgt
auf jeder Seite Variable
<?php $pageName = "index"; ?>
auf Indexseite und ähnlich<?php $pageName = "contact"; ?>
auf Kontaktseite setzenRufen Sie dann die Datei header.php auf (dh der Navigationscode befindet sich in der Datei header.php).
<?php include('header.php'); >
Stellen Sie in der header.php sicher, dass jeder Navi-Link wie folgt ist
<a class="nav-link <?php if ($page_name == 'index') {echo "active";} ?> href="index.php">Home</a>
<a class="nav-link <?php if ($page_name == 'contact') {echo "active";} ?> href="contact.php">Contact Us</a>
Ich hoffe, das hilft, weil ich Tage damit verbracht habe, die Abfrage zum Laufen zu bringen, aber gescheitert bin.
Wenn jemand freundlich erklären würde, was genau das Problem ist, wenn die header.php enthalten ist und dann die Seite geladen wird ... warum kann die jquery die aktive Klasse nicht zum nav-link hinzufügen .. ??
quelle
Ich habe nach einer Lösung gesucht, die ich für Bootstrap 4-Navigationsleisten und andere Gruppen von Links verwenden kann.
Aus dem einen oder anderen Grund haben die meisten Lösungen nicht funktioniert, insbesondere diejenigen, die versuchen, Links per Mausklick "aktiv" hinzuzufügen, da natürlich das von Ihnen hinzugefügte "aktiv" nicht angezeigt wird, wenn Sie auf den Link klicken, wenn Sie zu einer anderen Seite gelangen dort, weil sich das DOM geändert hat. Viele der anderen Lösungen funktionierten auch nicht, weil sie oft nicht mit dem Link übereinstimmten oder mit mehr als einer übereinstimmten.
Diese elegante Lösung eignet sich für Links, die unterschiedlich sind, z. B.: About.php, index.php usw.
Wenn es jedoch zu denselben Links mit unterschiedlichen Abfragezeichenfolgen wie index.php? Tag = a, index.php? Tag = b, index.php? Tag = c kam, wurden alle auf aktiv gesetzt, je nachdem, auf was geklickt wurde passend zum Pfadnamen nicht auch zur Abfrage.
Also habe ich diesen Code ausprobiert, der mit dem Pfadnamen und der Abfragezeichenfolge übereinstimmt, und er hat bei allen Links mit Abfragezeichenfolgen funktioniert, aber wenn auf einen Link wie index.php geklickt wurde, wurden auch die ähnlichen Links für Abfragezeichenfolgen aktiviert. Dies liegt daran, dass meine Funktion eine leere Zeichenfolge zurückgibt, wenn der Link keine Abfragezeichenfolge enthält, die wiederum nur mit dem Pfadnamen übereinstimmt.
Am Ende habe ich diese Route aufgegeben und sie einfach gehalten und geschrieben.
Es funktioniert für alle Links mit oder ohne Abfragezeichenfolgen, da element.href und location.href beide den vollständigen Pfad zurückgeben. Für andere Menüs usw. können Sie einfach die übergeordnete Klassenauswahl (Navigationsleiste) für eine andere ändern, dh:
Eine letzte Sache, die ebenfalls wichtig erscheint und die von Ihnen verwendete js & css-Bibliothek ist, aber das ist vielleicht ein anderer Beitrag. Ich hoffe das hilft und trägt dazu bei.
quelle