[英]Activate the tab of the location hash
我有3個級別的標簽結構:
<!-- Nav tabs - First level -->
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#home" role="tab" data-toggle="tab">Home</a></li>
<li><a href="#profile" role="tab" data-toggle="tab">Profile</a></li>
</ul>
<!-- Tab panes - First level -->
<div class="tab-content">
<div class="tab-pane active" id="home">
<p>Home content.</p>
<!-- Nav tabs - Second level -->
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#home2" role="tab" data-toggle="tab">Home 2</a></li>
<li><a href="#profile2" role="tab" data-toggle="tab">Profile 2</a></li>
</ul>
<!-- Tab panes - Second level -->
<div class="tab-content">
<div class="tab-pane active" id="home2">
<p>Home 2 content.</p>
<!-- Nav tabs - Third level -->
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#home3-1" role="tab" data-toggle="tab">Home 3-1</a></li>
<li><a href="#profile3-1" role="tab" data-toggle="tab">Profile 3-1</a></li>
</ul>
<!-- Tab panes - Third level -->
<div class="tab-content">
<div class="tab-pane active" id="home3-1"><p>Home 3-1 content.</p></div>
<div class="tab-pane" id="profile3-1"><p>Profile 3-1 content.</p></div>
</div>
</div>
<div class="tab-pane" id="profile2">
<p>Profile 2 content.</p>
<!-- Nav tabs - Third level -->
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#home3-2" role="tab" data-toggle="tab">Home 3-2</a></li>
<li><a href="#profile3-2" role="tab" data-toggle="tab">Profile 3-2</a></li>
</ul>
<!-- Tab panes - Third level -->
<div class="tab-content">
<div class="tab-pane active" id="home3-2"><p>Home 3-2 content.</p></div>
<div class="tab-pane" id="profile3-2"><p>Profile 3-2 content.</p></div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="profile">Profile content.</div>
</div>
可以在此處檢查此代碼:( http://jsfiddle.net/bvta2/3/ )。
當您訪問鏈接http://fiddle.jshell.net/bvta2/3/show/#profile3-1時 ,“配置文件3-1”選項卡顯示為活動狀態。 但是,例如,在訪問http://fiddle.jshell.net/bvta2/3/show/#home3-2時,“主頁3-2”選項卡不處於活動狀態。
如何使用jQuery解決此問題? 謝謝!
這是因為#home3-2
嵌套在一個隱藏的標簽中。
另一種看待這種情況的方式是以下代碼會發生什么?:
<div> 1
<div style="display:none"> 2
<div style="display:block"> 3 </div>
</div>
</div>
即使您使底部div可見,它的父級仍將其隱藏。
加載頁面時,您必須遍歷所有隱藏的父選項卡的dom並在它們上調用show
。
if (location.hash) {
$('a[href=' + location.hash + ']').tab('show');
// code to also show parent tabs
}
您可以這樣做:
//get the hashed element and find all of it's parent tabs that aren't active
$(location.hash).parents('.tab-pane:not(.active)').each(function() {
//each pane should have an id - find it's anchor target and call show
$('a[href=#' + this.id + ']').tab('show');
});
小提琴演示:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.