【发布时间】:2016-09-05 13:29:21
【问题描述】:
我在我的应用中使用 Bootstrap 药丸:
<div class="container">
<ul class="nav nav-pills">
<li class="active"><a data-target="#home" data-toggle="tab">Home</a></li>
<li><a href="#about" data-toggle="tab">About</a></li>
<li><a href="#contacts" data-toggle="tab">Contacts</a></li>
</ul>
</div>
<div class="tab-content">
<div class="tab-pane active" id="home">Home</div>
<div class="tab-pane" id="about">About</div>
<div class="tab-pane" id="contacts">Contacts</div>
</div>
为了在页面重新加载后保持在同一个选项卡上,我使用了以下功能:
$(function() {
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
localStorage.setItem('lastTab', $(this).attr('href'));
});
var lastTab = localStorage.getItem('lastTab');
if (lastTab) {
$('[href="' + lastTab + '"]').tab('show');
}
});
问题是页面重新加载后,第一个选项卡变为活动状态 1 秒钟,然后跳转到实际活动选项卡。我可以在没有这种“跳跃”的情况下保留当前标签吗?
【问题讨论】:
-
要么隐藏标签直到你决定显示哪一个,要么为
active类编写内联脚本。另一种方法是在加载任何其他脚本之前设置active类,这样您就不会等待一秒钟,它会很快完成。 -
我认为在当前状态下 - 你不能 - 你以不同的状态渲染你的药丸,然后通过 javascript 切换它 - 你应该在服务器端存储活动药丸状态或隐藏某种下面的所有内容加载程序(UX)在切换到正确的药丸/标签之前
标签: jquery twitter-bootstrap nav-pills