afficher/masquer twitter bootstrap onglets
Je suis en utilisant bootstrap pour l'affichage du contenu au-dessous des onglets, mais je veux de l'effondrement des onglets lorsque l'onglet est cliqué à nouveau. Voici le code que j'ai essayé pour se rendre au travail, en vain:
<ul id="myTab" class="nav nav-tabs">
<li class="square"><a class="story" href="#article1" data-toggle="tab"><img src="#"/></a></li>
<li class="square"><a class="story" href="#article2" data-toggle="tab"><img src="#g"/></a></li>
<li class="square"><a class="story" href="#article3" data-toggle="tab"><img src="#"/></a></li>
<div id="article1" class="tab-pane fade"><p>Lorem ipsum...</p></div>
<div id="article2" class="tab-pane fade"><p>Lorem ipsum dolor sit amet....</p</div>
<div id="article3" class="tab-pane fade"><p>Lorem ipsum dolor sit amet...</p></div>
</ul>
<script>
$('#myTab a').click(function (e) {
if($(this).tab.hasClass('active')){
$(this).tab('hide');
} else {
e.preventDefault();
$(this).tab('show');
}
})
</script>
Je ne suis pas sûr si les onglets sont censés travailler de cette façon...devrais-je essayer de l'effondrement de la fonctionnalité?
Vous devez vous connecter pour publier un commentaire.
Oui, il semble que vous voulez Bootstrap effondrement du widget. Cela dit, cette jQuery permet de masquer déjà de l'onglet actif:
Le problème est que cela empêche un caché onglet d'être montré à nouveau, donc je ne pense pas que vous aurez envie de l'utiliser. Voir http://jsfiddle.net/jhfrench/NQ97h/
Si vous voulez être en mesure d'apporter l'onglet de dos, essayez de:
Voir http://jsfiddle.net/epT3L/ pour cette solution.
$('.nav a')
, pas$('#myTab a')
...$('#myTab a').click(function (e) { if($(this).parent('li').hasClass('active')){ var target_pane=$(this).attr('href'); $( target_pane ).toggle( !$( target_pane ).is(":visible") ); } });
Voir jsfiddle.net/epT3LVoici un tweak de Jeromy de la solution qui, je crois, est-ce que vous voulez:
http://jsfiddle.net/NQ97h/39/
} else { tab.tab('show'); }
de faire des onglets togglable1
ms qui peut être omis, pas lasetTimeout
fonction elle-même. jsfiddle.net/NQ97h/662. Je dois ajouter qu'il n'est pas adapté pour les listes déroulantesEu le même problème et l'a résolu en modifiant le bootstrap.js.
Trouver l'onglet définition de la classe (généralement de ligne 1783) sur
Tab.prototype.show
de la fonction et de modifier:if ($this.parent('li').hasClass('active')) return
à
Il fonctionnera comme prévu et sans créer des scripts personnalisés" dans votre projet.
EDIT:
Cette modification affecte CHAQUE panneau d'onglets dans votre projet, cependant, si vous voulez faire cet effet uniquement sur les objets souhaités, vous aurez besoin d'ajouter un peu de
data-hide
ou quelque chose comme ça, telles que:ensuite, chaque parent
<li>
avecdata-hide
va se cacher lors d'un clic.J'ai une version qui fonctionne (dans mon cas, juste pour les onglets principaux, vous aurez à le modifier pour gérer la liste des onglets.) Je viens de le jeta dans une fourchette de Jeromy de jsfiddle ci-dessus: http://jsfiddle.net/HsqQQ/3/
Voici le code:
- Je obtenir un travail de bootstrap pilules de navigation qui prend en charge d'ouverture/de fermeture à bascule avec ce code:
});
Ce que sur le point de faire quelque chose comme ça?
show.bs.tab
sera toujours le feu avant declick
et qu'il donneraclick
le droit de l'état