【发布时间】:2017-08-04 16:04:05
【问题描述】:
我有嵌套的导航标签,比如
<div class="panel with-nav-tabs panel-default">
<div class="panel-heading">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab1default" data-toggle="tab">Default 1</a></li>
<li><a href="#tab2default" data-toggle="tab">Default 2</a></li>
</ul>
</div>
<div class="panel-body">
<div class="tab-content">
<div class="tab-pane fade in active" id="tab1default">
<div class="panel with-nav-tabs panel-default">
<div class="panel-heading">
<ul class="nav nav-tabs">
<li class="active"><a href="#test1" data-toggle="tab">T 1</a></li>
<li><a href="#test2" data-toggle="tab">T 2</a></li>
</ul>
</div>
<div class="panel-body">
<div class="tab-content">
<div class="tab-pane fade in active" id="test1">Test 1</div>
<div class="tab-pane fade" id="test2">Test 2</div>
</div>
</div>
</div>
</div>
<div class="tab-pane fade" id="tab2default">Default 2</div>
</div>
</div>
</div>
如果我想重新加载,可以通过 javascript 执行以下操作:
window.location.hash = "#tab2info";
location.reload();
效果很好,但如果我想重新加载嵌套的导航选项卡,它就不起作用了。
喜欢:
window.location.hash = "#test2";
location.reload();
那行不通。
只有重新加载的主导航标签有效,但嵌套的无效。
我尝试过的另一个解决方案在嵌套导航选项卡上没有同样的问题
<script type="text/javascript">
$('#myTab a').click(function(e) {
e.preventDefault();
$(this).tab('show');
});
// store the currently selected tab in the hash value
$("ul.nav-tabs > li > a").on("shown.bs.tab", function(e) {
var id = $(e.target).attr("href").substr(1);
window.location.hash = id;
});
// on load of the page: switch to the currently selected tab
var hash = window.location.hash;
$('#myTab a[href="' + hash + '"]').tab('show');
</script>
谢谢。
【问题讨论】:
-
如果提供jsfiddle或者codepen会更好
标签: javascript jquery twitter-bootstrap tabs nav