Ссылка на вкладку Bootstrap извне - как установить вкладку на "активный"?
У меня есть начальная "вкладка" навигации с 3 различными вкладками контента. Он отлично работает, за исключением того, что я хочу ссылаться на одну из вкладок вне навигации по вкладкам. Это означает, что когда кто-то щелкает ссылку за окном вкладки, она должна быть "активной" и показывать содержимое.
прямо сейчас, он показывает содержимое этой вкладки правильно, но вкладка не имеет значение "активный". Как мне добиться этого, чтобы он был "активным", как если бы кто-то щелкнул?
вот код:
<div>
<ul class="nav nav-tabs">
<li class="active"><a href="#home" data-toggle="tab">Home</a></li>
<li><a href="#profile" data-toggle="tab">Profile</a></li>
<li><a href="#messages" data-toggle="tab">Messages</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="home">Home Content</div>
<div class="tab-pane" id="profile">Profile Content</div>
<div class="tab-pane" id="messages">Messages Content</div>
</div>
</div>
<p></p>
<a href="#profile" data-toggle="tab">Profile Link From Outside</a>
Я сделал jsFiddle, чтобы показать его лучше:http://jsfiddle.net/fLJ9E/
большое спасибо за любую помощь или подсказки :)
7 ответов
вы можете сделать небольшой трюк, чтобы добиться этого:
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var target = this.href.split('#');
$('.nav a').filter('[href="#'+target[1]+'"]').tab('show');
})
У меня была та же проблема, и я решил просто вызвать событие click на соответствующей вкладке и позволить Bootstrap делать то, что необходимо.
$('#link').on('click', function(){
$('.nav-tabs a[href="#profile"]').click();
});
самый простой ответ-сделать это так:
<a href="#" id="profilelink">Profile Link From Outside</a>
затем в javascript добавьте:
$(document).ready(function () {
$("#profilelink").click(function () {
$('.nav a[href="#profile"]').tab('show');
});
});
это изменит как вид содержимого, так и активную кнопку сверху, используя встроенный метод плагина jQuery tabs. Если вы хотите добавить больше кнопок вне области вкладок, то вы можете сделать его более общим, например.
<a href="#profile" class="outsidelink">Profile Link From Outside</a>
$(document).ready(function () {
$(".outsidelink").click(function () {
$('.nav a[href="' + $(this).attr("href") + '"]').tab('show');
});
});
ниже маленького трюка, который я сделал, это работает для меня.
Я могу вызвать веб-страницу, добавив идентификатор таблетки bootstrap в URL.
например, вызов mypage.html#other_id отобразит таблетку, соответствующую #other_id
<ul class="nav nav-pills">
<li class="active"><a href="#default_id" data-toggle="pill">Default tab</a></li>
<li><a href="#other_id" data-toggle="pill">Other tab</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="default_id">
...
</div>
<div class="tab-pane" id="other_id">
...
</div>
</div>
здесь код JQuery:
$(document).ready(function(){
//Manage hash in URL to open the right pill
var hash = window.location.hash;
// If a hash is provided
if(hash && hash.length>0)
{
// Manage Pill titles
$('ul.nav-pills li a').each(function( index ) {
if($(this).attr('href')==hash)
$(this).parent('li').addClass('active');
else
$(this).parent('li').removeClass('active');
});
// Manage Tab content
var hash = hash.substring(1); // Remove the #
$('div.tab-content div').each(function( index ) {
if($(this).attr('id')==hash)
$(this).addClass('active');
else
$(this).removeClass('active');
});
}
});
Edit: мой код не совсем то, что вам нужно, но вы можете обновить его в соответствии с вашими потребностями. Скажите мне, если вам нужны объяснения
вероятно, нужно просто добавить / вычесть классы при добавлении внешней ссылки. Он вообще не привязан к вкладке.
$(".outside-link").click(function() {
$(".nav li").removeClass("active");
$($(this).attr("data-toggle-tab")).parent("li").addClass("active");
});
Рабочая Скрипка:http://jsfiddle.net/Bp2jm/
попробуйте это:
<li ....>
<a href="#tab-number">Tab Title</a>
</li>
и их Ваш url выглядит так: "[URL]#tab-number"
Я надеюсь помочь вам.... С уважением...
на основе ответа Omiod, (У меня недостаточно репутации, чтобы выразить это как комментарий-doh!)
однострочный, чтобы сделать то же самое без дополнительной разметки скрипта:
<a href="javascript:void(0);" onclick="$('.nav-tabs a[href=\'#TABID\']').click();">LINK NAME</a>