我有一个带有3个不同内容标签的Bootstrap“标签”导航。除了我想链接到OUTSIDE选项卡导航中的一个选项卡之外,它工作得很好。这意味着当有人单击选项卡窗口外的链接时,它应设置为“活动”该选项卡并显示内容。
现在,它正确显示该选项卡的内容,但该选项卡未设置为“活动”。我如何实现这一目标,使其像某人点击一样“活跃”?
以下是代码:
<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/
非常感谢您的任何帮助或提示:)
答案 0 :(得分:14)
你可以做一个小技巧来实现这个目标:
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var target = this.href.split('#');
$('.nav a').filter('[href="#'+target[1]+'"]').tab('show');
})
答案 1 :(得分:8)
我遇到了同样的问题,并选择在正确的选项卡上触发点击事件,然后让Bootstrap执行所需的操作。
$('#link').on('click', function(){
$('.nav-tabs a[href="#profile"]').click();
});
答案 2 :(得分:6)
最简单的答案是这样做:
<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');
});
});
答案 3 :(得分:1)
在我做的小动作之下,对我有用。
我可以调用网页将bootstrap pill id添加到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');
});
}
});
编辑:我的代码并不完全符合您的需求,但您可以根据自己的需要进行更新。如果您需要解释,请告诉我
答案 4 :(得分:0)
添加外部链接时可能只需添加/减去类。它根本没有真正与标签绑定。
$(".outside-link").click(function() {
$(".nav li").removeClass("active");
$($(this).attr("data-toggle-tab")).parent("li").addClass("active");
});
答案 5 :(得分:0)
试试这个:
<li ....>
<a href="#tab-number">Tab Title</a>
</li>
他们的网址如下:“[URL] #tab-number”
我希望能帮到你.... 此致...
答案 6 :(得分:0)
基于Omiod响应, (我没有足够的代表把它作为评论 - doh!)
在没有额外脚本标记的情况下执行相同的单行程序:
<a href="javascript:void(0);" onclick="$('.nav-tabs a[href=\'#TABID\']').click();">LINK NAME</a>