Je développe une page Web dans laquelle j'utilise le framework Bootstrap de Twitter et leurs onglets Bootstrap JS . Cela fonctionne très bien, sauf pour quelques problèmes mineurs, dont l'un est que je ne sais pas comment accéder directement à un onglet spécifique à partir d'un lien externe. Par exemple:
<a href="facility.php#home">Home</a>
<a href="facility.php#notes">Notes</a>
devrait aller à l'onglet Accueil et à l'onglet Notes respectivement lorsque vous cliquez sur les liens d'une page externe
javascript
html
tabs
twitter-bootstrap
mraliks
la source
la source
Réponses:
Voici ma solution au problème, un peu en retard peut-être. Mais cela pourrait peut-être aider les autres:
la source
window.scrollTo(0, 0);
pour m'assurer que la fenêtre défile toujours vers le hautSyntax error, unrecognized expression: .nav-tabs a[href=#tab-2]
. Résolu en utilisant stackoverflow.com/questions/12131273/…MISE À JOUR
Pour Bootstrap 3, passez
.on('shown', ...)
à.on('shown.bs.tab', ....)
Ceci est basé sur réponse @dubbe et cette réponse SO acceptée . Il gère le problème avec
window.scrollTo(0,0)
ne fonctionne pas correctement. Le problème est que lorsque vous remplacez le hachage d'URL sur l'onglet affiché, le navigateur défile jusqu'à ce hachage car il s'agit d'un élément sur la page. Pour contourner ce problème, ajoutez un préfixe afin que le hachage ne fasse pas référence à un élément de page réelExemple d'utilisation
Si vous avez un onglet avec id = "mytab", vous devez mettre votre lien comme ceci:
la source
$('.nav-tabs a[href="'+hash.replace(prefix,"")+'"]').tab('show');
vous pouvez déclencher un
click
événement sur le lien de l'onglet correspondant:la source
Il s'agit d'une implémentation améliorée de la solution de dubbe qui empêche le défilement.
la source
Bien que la solution JavaScript fournie puisse fonctionner, j'ai opté pour une méthode légèrement différente qui ne nécessite aucun JavaScript supplémentaire, mais nécessite une logique à votre avis. Vous créez un lien avec un paramètre d'URL standard, comme:
Ensuite, vous détectez simplement la valeur de activeTab pour écrire 'class = "active"' dans le
<li>
Pseudocode (implémentez en conséquence dans votre langue). Remarque J'ai défini l'onglet 'home' comme actif par défaut si aucun paramètre fourni dans cet exemple.
la source
Je ne suis pas un grand fan de if ... else; j'ai donc adopté une approche plus simple.
N'adresse pas le défilement au hachage demandé; mais le devrait- il?
la source
Pour Bootstrap 3:
https://jsfiddle.net/DTcHh/6638/
la source
Cela fonctionne dans Bootstrap 3 et améliore les 2 meilleures réponses de dubbe et flynfish en intégrant également la réponse de GarciaWebDev (qui permet les paramètres d'URL après le hachage et provient directement des auteurs de Bootstrap sur le suivi des problèmes de github):
la source
'shown'
devrait être'shown.bs.tab'
selon les documents: getbootstrap.com/javascript/#tabs-events . Je suis perplexe quant à pourquoi, mais quand j'ai essayé de modifier votre message, il a été rejeté ...Ce code sélectionne l'onglet de droite en fonction du #hash et ajoute le #hash de droite lorsqu'un onglet est cliqué. (cela utilise jquery)
Dans Coffeescript:
ou en JS:
la source
S'appuyer sur la solution de Demircan Celebi; Je voulais que l'onglet s'ouvre lors de la modification de l'url et ouvre l'onglet sans avoir à recharger la page depuis le serveur.
la source
Ce code de http://github.com/twitter/bootstrap/issues/2415#issuecomment-4450768 a parfaitement fonctionné pour moi.
la source
@flynfish + @Ztyx solution que j'utilise pour les onglets imbriqués:
les enfants doivent avoir class = "nested"
la source
J'ai trouvé une solution qui utilise le hachage d'URL ou localStorage en fonction de la disponibilité de ce dernier avec le code ci-dessous:
la source
Je vous suggère d'utiliser le code fourni par les auteurs de Bootstrap sur leur outil de suivi des problèmes sur GitHub :
Vous pouvez trouver sur le lien vers le problème plus d'informations sur les raisons pour lesquelles ils n'ont pas choisi de soutenir cela.
la source
J'ai essayé plusieurs façons discutées ci-dessus et vous vous retrouvez avec la solution de travail suivante, copiez et collez simplement dans votre éditeur pour essayer. Pour tester, changez simplement le hachage en boîte de réception, boîte d'envoi, composez dans l'URL et appuyez sur la touche Entrée.
J'espère que cela vous fera gagner du temps.
la source
Voici ce que j'ai fait, vraiment simple, et à condition que vos liens d'onglet aient un ID associé, vous pouvez obtenir l'attribut href et le transmettre à la fonction qui affiche le contenu de l'onglet:
Ensuite, dans votre URL, vous pouvez ajouter le hachage comme quelque chose comme: # tab_tab1, la partie 'tab_' est supprimée du hachage lui-même afin que l'ID du lien d'onglet réel dans les nav-tabs (tabid1) soit placé après cela, donc votre url ressemblerait à quelque chose comme: www.mydomain.com/index.php#tab_tabid1.
Cela fonctionne parfaitement pour moi et j'espère que cela aide quelqu'un d'autre :-)
la source
Ceci est ma solution pour gérer les onglets imbriqués. Je viens d'ajouter une fonction pour vérifier si l'onglet actif a un onglet parent à activer. Voici la fonction:
Et peut être appelé comme ceci (basé sur la solution de @ flynfish):
Cette solution me convient très bien pour le moment. J'espère que cela peut être utile pour quelqu'un d'autre;)
la source
J'ai dû modifier quelques bits pour que cela fonctionne pour moi. J'utilise Bootstrap 3 et jQuery 2
la source
Insérez simplement ce code sur votre page:
la source
Je viens d'avoir ce problème, mais je devais gérer plusieurs niveaux d'onglets. Le code est plutôt moche (voir commentaires), mais fait son travail: https://gist.github.com/JensRantil/4721860 J'espère que quelqu'un d'autre le trouvera utile (et n'hésitez pas à proposer de meilleures solutions!).
la source
En combinant des morceaux d'autres réponses, voici une solution qui peut ouvrir de nombreux niveaux d'onglets imbriqués:
la source
$('.nav-tabs li a').click( function(e) { history.pushState( null, null, $(this).attr('href') );});
dans le javascript au-dessus de votre code.Si cela importe pour tout le monde, le code suivant est petit et fonctionne parfaitement, pour obtenir une seule valeur de hachage à partir de l'URL et montrer que:
ce qu'il fait, c'est qu'il récupère l'id et déclenche l'événement click. Facile.
la source
Je fais quelque chose comme ça pour les liens avec ajax
#!#
(par exemple / test.com #! # Test3) mais vous pouvez le modifier comme bon vous sembleExemple avec une page simple sur Github ici
la source
Je sais que ce fil est très ancien, mais je vais laisser ici ma propre implémentation:
Notez que j'utilise un
nav-
préfixe de classe pour naviguer dans les liens.la source