如图实现目标: a页面的tab1标签页中点击more 跳去b页面的tab1,同理类比其他两个tab。
这里为什么是more跳过去的呢,因为tab nav上面的tab1,tab2,tab3,是用来对应自己在同个页面的标签页的。
使用框架: bootstrap的v3版本的tabs标签页
https://v3.bootcss.com/javascript/#tabs
老生常谈: 为当中某个标签页的<li>元素指定 “active”类名就可以激活当前对象 当然也可以用:first,:last,:eq(2)等的jq为指定的<li>元素中的<a>激活显示对应的标签页
$(function () {
$('#myTab a:first').tab('show');//初始化显示第一个tab
$('#myTab a:last').tab('show');//初始化显示最后一个tab
$('#myTab li:eq(2) a').tab('show');//选中第三个tab
$('#myTab a[href="#wanted"]').tab('show');//选中你想要的tab
$('#myTab a').click(function (e) {
e.preventDefault();//阻止默认行为
$(this).tab('show');//显示当前选中的链接及关联的content
})
})
实现目标: 需要跨页面实现tab的选中。实现思路: a页面通过url传参(参数是tab的名称),然后在b页面进行截断获取再进行选中(通过在url传参的做法前提是不影响后台传数据)
<!--a页面-->
<ul class="nav nav-pills nav-justified" id="myTab">
<li role="presentation" class="active">
<a href="#tab1">tab1</a>
</li>
<li role="presentation">
<a href="#tab2">tab2</a>
</li>
<li role="presentation">
<a href="#tab3">tab3</a>
</li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="tab1">
<p>tab1 content</p>
<a href="./detail.html?type=tab1" class="btn btn-lg">
more
</a>
</div>
<div role="tabpanel" class="tab-pane" id="tab2">
<p>tab1 content</p>
<a href="./detail.html?type=tab2" class="btn btn-lg">
more
</a>
</div>
<div role="tabpanel" class="tab-pane" id="tab3">
<p>tab1 content</p>
<a href="./detail.html?type=tab3" class="btn btn-lg">
more
</a>
</div>
</div>
<!--b页面-->
<ul class="nav nav-pills nav-justified" id="myTab">
<li role="presentation" class="active">
<a href="#tab1">tab1</a>
</li>
<li role="presentation">
<a href="#tab2">tab2</a>
</li>
<li role="presentation">
<a href="#tab3">tab3</a>
</li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="tab1">
<p>tab1 content</p>
<nav aria-label="...">
<ul class="pagination">
<li class="disabled">
<a href="#" aria-label="Previous">
<span aria-hidden="true"><</span>
</a>
</li>
<li>
<a href="#">1 <span class="sr-only">(current)</span></a>
</li>
<li>
<a href="#">2</a>
</li>
<li>
<a href="#">3</a>
</li>
</ul>
</nav>
</div>
<div role="tabpanel" class="tab-pane" id="tab2">
<p>tab2 content</p>
<nav aria-label="...">
<ul class="pagination">
<li class="disabled">
<a href="#" aria-label="Previous">
<span aria-hidden="true"><</span>
</a>
</li>
<li>
<a href="#">1 <span class="sr-only">(current)</span></a>
</li>
<li>
<a href="#">2</a>
</li>
<li>
<a href="#">3</a>
</li>
</ul>
</nav>
</div>
<div role="tabpanel" class="tab-pane" id="tab3">
<p>tab3 content</p>
<nav aria-label="...">
<ul class="pagination">
<li class="disabled">
<a href="#" aria-label="Previous">
<span aria-hidden="true"><</span>
</a>
</li>
<li>
<a href="#">1 <span class="sr-only">(current)</span></a>
</li>
<li>
<a href="#">2</a>
</li>
<li>
<a href="#">3</a>
</li>
</ul>
</nav>
</div>
</div>
<script>
//标签页的点击切换
$('#myTab a').click(function (e) {
e.preventDefault()
$(this).tab('show')
})
//判断a页面中是哪个tab标签页的more跳过来的
var ur=location.href;
var type=ur.split('?')[1].split("=")[1];
switch (type){
case 'tab1':
$('#myTab a[href="#tab1"]').tab('show')
break;
case 'tab2':
$('#myTab a[href="#tab2"]').tab('show')
break;
case 'tab3':
$('#myTab a[href="#tab3"]').tab('show')
break;
}
</script>
结论: 看思路+代码 感想: 感觉除了用if,else if,else,或者是switch来区分对待它们之外,或许还有什么能节省代码量,或者提高性能,或者提高语句覆盖的方法来弄,看以后学深了就更新。