[英]Nested bootstrap tabs - jQuery
I have multiple level tabs like this: 我有多个这样的级别标签:
<ul class="nav nav-tabs" id="interest_tabs">
<!--top level tabs-->
<li><a href="#all" data-toggle="tab">All</a></li>
<li><a href="#brands" data-toggle="tab">Brands</a></li>
</ul>
<!--top level tab content-->
<div class="tab-content">
<!--all tab menu-->
<div id="all" class="tab-pane">
<ul class="nav nav-tabs" id="all_tabs">
<li><a href="#all_popular" data-toggle="tab">Popular</a></li>
</ul>
</div>
<!--brands tab menu-->
<div id="brands" class="tab-pane">
<ul class="nav nav-tabs" id="brands_tabs">
<li><a href="#brands_popular" data-toggle="tab">Popular</a></li>
<li><a href="#brands_unique" data-toggle="tab">Unique</a></li>
</ul>
</div>
</div>
<div>
<!--all tab content-->
<div class="tab-content">
<div id="all_popular" class="tab-pane">
<i>all_popular interests go here</i>
</div>
<div id="all_unique" class="tab-pane">
<i>all_unique interests go here</i>
</div>
</div>
<!--brands tab content-->
<div class="tab-content">
<div id="brands_popular" class="tab-pane">
<i>brands_popular interests go here</i>
</div>
<div id="brands_unique" class="tab-pane">
<i>brands_unique interests go here</i>
</div>
</div>
</div>
And here is the jQuery part: 这是jQuery部分:
jQuery(document).ready(function($) {
$('#interest_tabs').on('click', 'a[data-toggle="tab"]', function(e) {
e.preventDefault();
var $link = $(this);
if (!$link.parent().hasClass('active')) {
//remove active class from other tab-panes
$('.tab-content:not(.' + $link.attr('href').replace('#','') + ') .tab-pane').removeClass('active');
// click first submenu tab for active section
$('a[href="' + $link.attr('href') + '_all"][data-toggle="tab"]').click();
// activate tab-pane for active section
$('.tab-content.' + $link.attr('href').replace('#','') + ' .tab-pane:first').addClass('active');
}
});
});
The issue here is when for example I access the All
tab and then its child Popular
it displays its content, but when I go to the other tab Brands
and then return to the first tab All
, I can't access its content anymore. 这里的问题是,例如,当我访问“
All
选项卡,然后访问其子项“ Popular
将显示其内容,但是当我进入其他选项卡的“ Brands
然后返回到第一个选项卡“ All
,我将无法再访问其内容。
Here is the jsfiddle: http://jsfiddle.net/36hk5bne/ 这是jsfiddle: http : //jsfiddle.net/36hk5bne/
You need to use nested markup. 您需要使用嵌套标记。 The tab content should be inside the parent tab's pane.
标签内容应位于父标签的窗格内。 Then
active
can be set on the default tabs and panes. 然后可以在默认选项卡和窗格上设置
active
。
<div class="tabbable">
<ul class="nav nav-tabs" id="interest_tabs">
<!--top level tabs-->
<li class="active"><a href="#all" data-toggle="tab">All</a></li>
<li><a href="#brands" data-toggle="tab">Brands</a></li>
</ul>
<!--top level tab content-->
<div class="tab-content">
<!--all tab menu-->
<div id="all" class="tab-pane active">
<ul class="nav nav-tabs" id="all_tabs">
<li class="active"><a href="#all_popular" data-toggle="tab">Popular</a></li>
</ul>
<!--all tab content-->
<div class="tab-content">
<div id="all_popular" class="tab-pane active">
<i>all_popular interests go here</i>
</div>
<div id="all_unique" class="tab-pane">
<i>all_unique interests go here</i>
</div>
</div>
</div><!--all tab pane-->
<!--brands tab menu-->
<div id="brands" class="tab-pane">
<ul class="nav nav-tabs" id="brands_tabs">
<li class="active"><a href="#brands_popular" data-toggle="tab">Popular</a></li>
<li><a href="#brands_unique" data-toggle="tab">Unique</a></li>
</ul>
<!--brands tab content-->
<div class="tab-content">
<div id="brands_popular" class="tab-pane active">
<i>brands_popular interests go here</i>
</div>
<div id="brands_unique" class="tab-pane">
<i>brands_unique interests go here</i>
</div>
</div>
</div><!--brands tab pane-->
</div> <!--top level tab content-->
</div>
Just put the div.tab-content
under their respective ul
tabs. 只需将
div.tab-content
放在各自的ul
标签下即可。 This way, it works, without any additional JavaScript code. 这样,它就可以工作,而无需任何其他JavaScript代码。
The main level tabs show the first tab-content
, which is where your second level tabs are, including their tab-content
. 主级别的选项卡显示第一个
tab-content
,这是第二级选项卡所在的位置,包括其tab-content
。
Here is the HTML that you need. 这是您需要的HTML。 No additional JS needed:
无需其他JS:
<ul class="nav nav-tabs" id="interest_tabs">
<!--top level tabs-->
<li><a href="#all" data-toggle="tab">All</a></li>
<li><a href="#brands" data-toggle="tab">Brands</a></li>
</ul>
<!--top level tab content-->
<div class="tab-content">
<!--all tab menu-->
<div id="all" class="tab-pane">
<ul class="nav nav-tabs" id="all_tabs">
<li><a href="#all_popular" data-toggle="tab">Popular</a></li>
</ul>
<div class="tab-content">
<div id="all_popular" class="tab-pane">
<i>all_popular interests go here</i>
</div>
<div id="all_unique" class="tab-pane">
<i>all_unique interests go here</i>
</div>
</div>
</div>
<!--brands tab menu-->
<div id="brands" class="tab-pane">
<ul class="nav nav-tabs" id="brands_tabs">
<li><a href="#brands_popular" data-toggle="tab">Popular</a></li>
<li><a href="#brands_unique" data-toggle="tab">Unique</a></li>
</ul>
<div class="tab-content">
<div id="brands_popular" class="tab-pane">
<i>brands_popular interests go here</i>
</div>
<div id="brands_unique" class="tab-pane">
<i>brands_unique interests go here</i>
</div>
</div>
</div>
</div>
Here is a fiddle, based on yours: http://jsfiddle.net/36hk5bne/1/ 这是一个基于您的小提琴: http : //jsfiddle.net/36hk5bne/1/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.