我现在已经绞尽脑汁了一会儿,我想知道是否有人知道如何使用jQuery和Twitter的Bootstrap找到活动标签。从网址中提取哈希不是我的第一选择,我使用data-toggle
链接中的<a>
属性,因此无需生成网址哈希。
有什么见解?这是我的标记的一个例子:
<ul class="nav nav-list" id="sampleTabs">
<li><a href="#example" data-toggle="tab">Tab 1</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane fade active in" id="example">
Example Tab
</div>
</div>
<script>
$('#sampleTabs a:first').tab('show');
</script>
我对任何建议持开放态度 - 使用PHP会话,JS cookie等
编辑:这是真正的问题。我有一个使用PHP的分页系统,所以当点击页码或下一个/上一个箭头时,它将重新加载页面。这就是我需要在加载下一页之前找到活动标签的原因,因为我只是在网址或会话等中传递它。
答案 0 :(得分:97)
Twitter Bootstrap将active
类分配给代表活动标签的li
元素:
$("ul#sampleTabs li.active")
另一种方法是绑定每个选项卡的shown
事件,并保存活动选项卡:
var activeTab = null;
$('a[data-toggle="tab"]').on('shown', function (e) {
activeTab = e.target;
})
答案 1 :(得分:24)
以下是那些需要Boostrap 3解决方案的人的答案。
在bootstrap 3中使用&quot; shows.bs.tab&#39;而不是&#39;显示&#39;在下一行
// tab
$('#rowTab a:first').tab('show');
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
//show selected tab / active
console.log ( $(e.target).attr('id') );
});
答案 2 :(得分:3)
首先,您需要删除数据切换属性。我们将使用一些JQuery,因此请确保包含它。
<ul class='nav nav-tabs'>
<li class='active'><a href='#home'>Home</a></li>
<li><a href='#menu1'>Menu 1</a></li>
<li><a href='#menu2'>Menu 2</a></li>
<li><a href='#menu3'>Menu 3</a></li>
</ul>
<div class='tab-content'>
<div id='home' class='tab-pane fade in active'>
<h3>HOME</h3>
<div id='menu1' class='tab-pane fade'>
<h3>Menu 1</h3>
</div>
<div id='menu2' class='tab-pane fade'>
<h3>Menu 2</h3>
</div>
<div id='menu3' class='tab-pane fade'>
<h3>Menu 3</h3>
</div>
</div>
</div>
<script>
$(document).ready(function(){
// Handling data-toggle manually
$('.nav-tabs a').click(function(){
$(this).tab('show');
});
// The on tab shown event
$('.nav-tabs a').on('shown.bs.tab', function (e) {
alert('Hello from the other siiiiiide!');
var current_tab = e.target;
var previous_tab = e.relatedTarget;
});
});
</script>