Ich entwickle eine Webseite, auf der ich das Bootstrap Framework von Twitter und dessen Bootstrap Tabs JS verwende . Es funktioniert großartig, bis auf ein paar kleinere Probleme, von denen eines ist, dass ich nicht weiß, wie ich von einem externen Link direkt zu einem bestimmten Tab gehe. Zum Beispiel:
<a href="facility.php#home">Home</a>
<a href="facility.php#notes">Notes</a>
sollte auf die Registerkarte Startseite und die Registerkarte Notizen gehen, wenn Sie auf die Links einer externen Seite klicken
javascript
html
tabs
twitter-bootstrap
mraliks
quelle
quelle
Antworten:
Hier ist meine Lösung für das Problem, vielleicht etwas spät. Aber es könnte vielleicht anderen helfen:
quelle
window.scrollTo(0, 0);
, um sicherzustellen, dass das Fenster immer nach obenSyntax error, unrecognized expression: .nav-tabs a[href=#tab-2]
. Gelöst mit stackoverflow.com/questions/12131273/…AKTUALISIEREN
Wechseln Sie für Bootstrap 3
.on('shown', ...)
zu.on('shown.bs.tab', ....)
Dies basiert auf der Antwort von @dubbe und dieser SO akzeptierten Antwort . Es behebt das Problem, dass es
window.scrollTo(0,0)
nicht richtig funktioniert. Das Problem ist, dass der Browser beim Ersetzen des URL-Hash auf der angezeigten Registerkarte zu diesem Hash blättert, da er ein Element auf der Seite ist. Um dies zu umgehen, fügen Sie ein Präfix hinzu, damit der Hash nicht auf ein tatsächliches Seitenelement verweistAnwendungsbeispiel
Wenn Sie einen Tab-Bereich mit id = "mytab" haben, müssen Sie Ihren Link wie folgt einfügen:
quelle
$('.nav-tabs a[href="'+hash.replace(prefix,"")+'"]').tab('show');
Sie können ein
click
Ereignis auf dem entsprechenden Tab-Link auslösen :quelle
Dies ist eine verbesserte Implementierung der Dubbe-Lösung, die das Scrollen verhindert.
quelle
Während die bereitgestellte JavaScript-Lösung möglicherweise funktioniert, bin ich einen etwas anderen Weg gegangen, der kein zusätzliches JavaScript erfordert, aber Ihrer Ansicht nach Logik erfordert. Sie erstellen einen Link mit einem Standard-URL-Parameter wie:
Dann erkennen Sie einfach den Wert von activeTab, um 'class = "active"' in das entsprechende Feld zu schreiben
<li>
Pseudocode (entsprechend in Ihrer Sprache implementieren). Hinweis: Ich habe die Registerkarte "Home" als Standard aktiviert, wenn in diesem Beispiel kein Parameter angegeben ist.
quelle
Ich bin kein großer Fan von wenn ... sonst; Also habe ich einen einfacheren Ansatz gewählt.
Adressiert das Scrollen zum angeforderten Hash nicht. sollte aber es?
quelle
Für Bootstrap 3:
https://jsfiddle.net/DTcHh/6638/
quelle
Dies funktioniert in Bootstrap 3 und verbessert die beiden Top-Antworten von Dubbe und Flynfish, indem auch die Antwort von GarciaWebDev integriert wird (die URL-Parameter nach dem Hash zulässt und direkt von Bootstrap-Autoren auf dem Github-Issue-Tracker stammt):
quelle
'shown'
sollte'shown.bs.tab'
gemäß den folgenden Dokumenten erfolgen: getbootstrap.com/javascript/#tabs-events . Ich bin verblüfft, warum, aber als ich versuchte, Ihren Beitrag zu bearbeiten, wurde er abgelehnt ...Dieser Code wählt die rechte Registerkarte abhängig vom #hash aus und fügt die rechte #hash hinzu, wenn auf eine Registerkarte geklickt wird. (dies verwendet jquery)
In Coffeescript:
oder in JS:
quelle
Aufbauend auf der Lösung von Demircan Celebi; Ich wollte, dass die Registerkarte geöffnet wird, wenn die URL geändert und die Registerkarte geöffnet wird, ohne dass die Seite vom Server neu geladen werden muss.
quelle
Dieser Code von http://github.com/twitter/bootstrap/issues/2415#issuecomment-4450768 hat bei mir perfekt funktioniert.
quelle
@ flynfish + @ Ztyx-Lösung, die ich für verschachtelte Registerkarten verwende:
Kinder sollten class = "verschachtelt" haben
quelle
Ich habe eine Lösung gefunden, die den URL-Hash oder localStorage verwendet, abhängig von der Verfügbarkeit des letzteren mit dem folgenden Code:
quelle
Ich würde vorschlagen, dass Sie den von Bootstrap-Autoren bereitgestellten Code für ihren Issue-Tracker auf GitHub verwenden :
Unter dem Link zum Problem finden Sie weitere Informationen darüber, warum sie dies nicht unterstützt haben.
quelle
Probieren Sie einige der oben beschriebenen Möglichkeiten aus und erhalten Sie die folgende funktionierende Lösung. Kopieren Sie sie einfach und fügen Sie sie in Ihren Editor ein, um es zu versuchen. Zum Testen ändern Sie einfach den Hash in Posteingang, Postausgang, verfassen die URL und drücken die Eingabetaste.
Hoffe das spart deine Zeit.
quelle
Hier ist, was ich getan habe, ganz einfach, und vorausgesetzt, Ihren Tab-Links ist eine ID zugeordnet, können Sie das href-Attribut abrufen und dieses an die Funktion übergeben, die den Tab-Inhalt anzeigt:
Dann können Sie in Ihrer URL den Hash wie folgt hinzufügen: # tab_tab1, der Teil 'tab_' wird aus dem Hash selbst entfernt, sodass die ID des tatsächlichen Tab-Links in den Navigations-Tabs (tabid1) danach platziert wird Die URL würde ungefähr so aussehen: www.mydomain.com/index.php#tab_tabid1.
Das funktioniert perfekt für mich und hoffe es hilft jemand anderem :-)
quelle
Dies ist meine Lösung für verschachtelte Registerkarten. Ich habe gerade eine Funktion hinzugefügt, um zu überprüfen, ob auf der aktiven Registerkarte eine übergeordnete Registerkarte aktiviert werden muss. Dies ist die Funktion:
Und kann so aufgerufen werden (basierend auf der Lösung von @ flynfish):
Diese Lösung funktioniert im Moment ziemlich gut für mich. Hoffe das kann für jemand anderen nützlich sein;)
quelle
Ich musste einige Bits modifizieren, damit dies für mich funktioniert. Ich verwende Bootstrap 3 und jQuery 2
quelle
Fügen Sie einfach diesen Code auf Ihrer Seite ein:
quelle
Ich hatte gerade dieses Problem, musste aber mehrere Registerkartenebenen behandeln. Der Code ist ziemlich hässlich (siehe Kommentare), macht aber seinen Job: https://gist.github.com/JensRantil/4721860 Hoffentlich findet ihn jemand anderes nützlich (und kann gerne bessere Lösungen vorschlagen!).
quelle
Hier ist eine Lösung, die Peices aus anderen Antworten kombiniert und viele Ebenen verschachtelter Registerkarten öffnen kann:
quelle
$('.nav-tabs li a').click( function(e) { history.pushState( null, null, $(this).attr('href') );});
im Javascript über Ihrem Code.Wenn es für jemanden wichtig ist, ist der folgende Code klein und funktioniert einwandfrei, um einen einzelnen Hash-Wert von der URL zu erhalten und Folgendes zu zeigen:
Es ruft die ID ab und löst das Klickereignis aus. Einfach.
quelle
Ich mache etw so für Links mit Ajax
#!#
(zB / test.com #! # Test3), aber Sie können es ändern, was Sie wollenBeispiel mit einfacher Seite auf Github hier
quelle
Ich weiß, dass dieser Thread sehr alt ist, aber ich werde hier meine eigene Implementierung belassen:
Beachten Sie, dass ich ein
nav-
Klassenpräfix für Navigationslinks verwende.quelle