在重新加载代码段上设置 Bootstrap 当前选项卡,而不是在本地存储中存储最后一个选项卡
Set Bootstrap current tab on reload snippet not storing last tab in local storage
我正在尝试在页面加载时设置当前选项卡(页面重新加载前查看的最后一个选项卡)。我已经在堆栈溢出上尝试了多种解决方案,但没有成功。
$(function() {
//for bootstrap 3 use 'shown.bs.tab' instead of 'shown' in the next line
$('a[data-toggle="tab"]').on('shown', function (e) {
//save the latest tab; use cookies if you like 'em better:
localStorage.setItem('lastTab', $(e.target).attr('id'));
});
//go to the latest tab, if it exists:
var lastTab = localStorage.getItem('lastTab');
if (lastTab) {
$('#'+lastTab).tab('show');
}
}
);
这是我的标签 HTML
<div class="tabbable"> <!-- Only required for left/right tabs -->
<ul class="nav nav-tabs">
<li><a href="#all" data-toggle="tab">All</a></li>
<li><a href="#this_month" data-toggle="tab">This Month</a></li>
<li><a href="#next_month" data-toggle="tab">Next Month</a></li>
<li><a href="#last_month" data-toggle="tab">Last Month</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane" id="all">
<%= render partial: 'layouts/format_bills', locals: { bill_filter: @all_bills_by_months } %>
</div>
<div class="tab-pane" id="this_month">
<%= render partial: 'layouts/format_bills', locals: { bill_filter: @bills_for_this_month } %>
</div>
<div class="tab-pane" id="next_month">
<%= render partial: 'layouts/format_bills', locals: { bill_filter: @bills_for_next_month } %>
</div>
<div class="tab-pane" id="last_month">
<%= render partial: 'layouts/format_bills', locals: { bill_filter: @bills_for_last_month } %>
</div>
</div>
</div>
(仅适用于以下评论中提到的错误)
function setLatestTab() {
var lastTab = localStorage.getItem('lastTab');
if (lastTab) {
$('a[href='+lastTab+']').click();
}
}
setLatestTab();
$('.table #payBills').on('click', function(e) {
setLatestTab();
});
单击链接后不设置最新选项卡。
和支付操作:
def pay
@bill.update_attributes(paid: true)
redirect_to bills_path
end
这适用于您的标记:
$(function() {
$('a[data-toggle="tab"]').on('click', function (e) {
var tab = $(this).attr('href');
localStorage.setItem('lastTab', tab);
});
//go to the latest tab, if it exists:
var lastTab = localStorage.getItem('lastTab');
if (lastTab) {
$('a[href='+lastTab+']').click();
}
}
我在tab('show')
上挣扎了很多 - 它似乎不起作用,甚至没有按照 api 3 文档建议的方式进行硬编码。它在旧的 2.3.x 时代工作。但是,这不是第一次在引导程序中发现异常或"功能"。
相关文章:
- 存储JQuery中的选项值
- 如何在外部文件中存储谷歌地图选项
- 浏览器会话存储.在选项卡之间共享
- 存储值后,重复重新选择选择下拉菜单的第一个选项
- 如何使用复选框启用选项并通过本地存储进行保存
- 如何获取不同选项卡的实例,以便我可以存储变量/执行特定于各个选项卡的操作
- 错误:FS.Store.S3 您必须指定“存储桶”选项(meteor.js 和 s3)
- 具有多个浏览器选项卡/窗口的骨干网.js和本地存储覆盖数据
- 删除 localStorage,Chrome/Chromium 中选项卡的数据库存储
- 用于在 Chrome 扩展程序中存储用户数据的选项
- 如何在选择选项后立即从选择菜单中将值保存到本地存储?它不起作用
- 将用户选择的多个单选按钮选项存储在使用 ng-repeat(s)构建的角度 js 中
- 在重新加载代码段上设置 Bootstrap 当前选项卡,而不是在本地存储中存储最后一个选项卡
- 克隆 使用 javascript 选择选项并将它们存储在隐藏字段中
- 存储选择框的选项值并将其存储到变量中(通过逗号分隔的值)
- Jquery 使用本地存储记住上次选择的选项卡
- 如何存储谷歌浏览器扩展程序的首选项
- 为select控件中的每个选项存储一个数组
- 将javascript中不同选择的选项存储到数组中
- 将用户首选项存储在Cookie中