Je travaille avec bootstrap 3 et j’ai quelques problèmes pour lier une URL à un onglet spécifique, le panneau change mais l’onglet activé ne .. .. Je souhaite donc que la ligne <a href="#tab2" data-toggle="tab">link</a>
, pour aller à l’onglet2, mais seulement va au panneau de l'onglet2, il n'active pas l'onglet.
Voici le code HTML:
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab1" data-toggle="tab">Section 1</a></li>
<li><a href="#tab2" data-toggle="tab">Section 2</a></li>
<li><a href="#tab3" data-toggle="tab">Section 3</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab1">
<p><a href="#tab2" data-toggle="tab">link</a>.</p>
</div>
<div class="tab-pane" id="tab2">
<p> I'm in Section 2.</p>
</div>
<div class="tab-pane" id="tab3">
<p>Howdy, I'm in Section 3 </p>
</div>
</div>
</div>
Vous pouvez tester ceci dans ce lien http://bootply.com/90412
Pour activer l'onglet, vous pouvez utiliser le plugin jQuery comme indiqué dans bootstrap . Vous pouvez donc ajouter ce morceau de code jQuery à votre programme pour activer l'onglet:
$(function () {
$('#tab1 a').click(function (e) {
e.preventDefault();
$('a[href="' + $(this).attr('href') + '"]').tab('show');
})
});
Vous pouvez vérifier ce lien: Code mis à jour
L'activation de l'onglet dépend de la structure ul . Dans votre cas, vous pouvez écraser l'événement click du plugin en ajoutant à la fin de votre document (après le code Javascript de Boostrap):
$(function(){
$(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
e.preventDefault()
if($(this).parent().prop('tagName')!=='LI')
{
$('ul.nav li a[href="' + $(this).attr('href') + '"]').tab('show');
}
else
{
$(this).tab('show')
}
})
});
Ref: Obtenir le type d'élément avec jQuery
Remarque: une version plus courte fonctionnera également dans ce cas:
$(function(){
$(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
e.preventDefault()
$('ul.nav li a[href="' + $(this).attr('href') + '"]').tab('show');
})
});
Comme la réponse de Rohitha, mais un peu plus générale:
$(function () {
$('a.link-to-tab').click(function (e) {
e.preventDefault();
$('a[href="' + $(this).attr('href') + '"]').tab('show');
})
});
Fonctionne pour toute balise d'ancrage avec class="link-to-tab"
et un href à l'identifiant de l'onglet à afficher. Par exemple, <a class="link-to-tab" href="#tab2">
.