我正在使用Bootstrap的nav-tabs
进行以下设置:
<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>
</ul>
<div id="tabContent" class="tab-content">
<div class="tab-pane active in" id="home">
<form id="tab">
<label>Name:</label>
<input type="text" value="fooBar" class="input-xlarge">
</form>
</div>
<div class="tab-pane fade" id="profile">
<form id="tab2">
<a href="#home">Home</a>
</form>
</div>
</div>
如您所见,我的profile
标签中有一个链接,该链接指向第一个标签。单击锚点会更改URL栏中的URL,但不会跳转到特定选项卡。
然后我注意到通常无法直接链接到标签,因此我在Twitter Bootstrap Tabs: Go to Specific Tab on Page Reload or Hyperlink添加了以下代码:
// Javascript to enable link to tab
var url = document.location.toString();
if (url.match('#')) {
$('.nav-tabs a[href=#'+url.split('#')[1]+']').tab('show') ;
}
// Change hash for page-reload
$('.nav-tabs a').on('shown', function (e) {
window.location.hash = e.target.hash;
})
现在我可以从其他地方链接到特定选项卡,但不是,如果我在导航栏所在的同一页面上。重新加载页面然后会跳转到想要的标签,所以我想我可以用Javascript: How to truly reload a site with an anchor tag?的解决方案强行重新加载页面:
window.location.reload(true);
但是,每次点击标签时都会重新加载,此外,当点击主播时,它仍然没有加载home
标签。
因此,我如何从另一个标签跳转到给定的id
?
答案 0 :(得分:38)
你可能已经被你提到的其他答案弄错了...在同一页面内更改标签是相当简单的(无论你是否在另一个标签中):你可以使用这个基本的引导程序tab navigation Javascript。
首先更改您的html:在<ul class="nav nav-tabs" id="myTab">..
添加ID,然后添加第二个标签的链接:
<div class="tab-pane fade" id="profile">
<form id="tab2">
<a href="#" id="gotohome">Jump to home tab (this works)</a>
...
并在您的文档中添加以下内容:
$('#gotohome').click(function() {
$('#myTab a[href="#home"]').tab('show');
});
jsFiddle的工作示例。
答案 1 :(得分:0)
给出的答案
$('#myTab a[href="#home"]').tab('show');
也可用于使JavaScript软件跳转到特定选项卡。 假设您希望使用url跳转到开始时的特定选项卡:
http://myDomain/myApp#tabSomewhere
你可以想象它会起作用(你需要做一些额外的编码)。 假设您的第一页位于tabHome(您使用&#39; active&#39;类激活了。当您尝试使用javascript返回该页面时,您必须使用以下命令从tabHome中删除活动类:
$('li').removeClass('active');