You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在页面重载后保持指定Bootstrap标签页处于激活状态?

解决Bootstrap标签页页面重载后保持激活状态的问题

你当前代码里window.location.reload()之后的$('#liProcess-in').addClass('active in')不会执行——页面刷新后当前上下文的JS代码会直接终止,所有未执行的代码都会失效。要实现重载后保持标签页激活,需要先把激活状态存储起来,等页面重新加载后再读取状态并设置。

方案一:使用localStorage存储状态

修改点击事件代码,在刷新前把目标标签页的ID存入本地存储:

$('.btn-save-all').click(function () {
    $("input[name*='txtid']").each(function () {
        let id = $(this).attr('name');
        id = id.replace('txtid', '');
        let dat = $(this).val();
        SaveExpectedBookDate(id, dat);
    });
    alert("Success");
    // 把要激活的标签页ID存入本地存储
    localStorage.setItem('activeTab', 'liProcessin');
    window.location.reload();
});

然后在页面加载完成时,读取本地存储并设置标签页激活状态:

$(document).ready(function() {
    const activeTabId = localStorage.getItem('activeTab');
    if (activeTabId === 'liProcessin') {
        // 移除默认激活标签页的类
        $('#myTab li.active').removeClass('active in');
        $('#tab_content1').removeClass('active in');
        // 激活目标标签页和对应内容面板
        $('#liProcessin').addClass('active in');
        $('#tab_content2').addClass('active in');
        // 更新标签页的aria属性以符合Bootstrap规范
        $('#home-tab').attr('aria-expanded', 'false');
        $('#profile-tab').attr('aria-expanded', 'true');
    }
});

方案二:使用URL参数传递状态

如果不想依赖本地存储,可以在刷新时给URL添加参数,页面加载时读取参数来设置状态:
修改点击事件代码:

$('.btn-save-all').click(function () {
    $("input[name*='txtid']").each(function () {
        let id = $(this).attr('name');
        id = id.replace('txtid', '');
        let dat = $(this).val();
        SaveExpectedBookDate(id, dat);
    });
    alert("Success");
    // 跳转到当前页面并携带tab参数
    window.location.href = `${window.location.pathname}?tab=liProcessin`;
});

页面加载时读取URL参数并设置状态:

$(document).ready(function() {
    const urlParams = new URLSearchParams(window.location.search);
    const activeTab = urlParams.get('tab');
    if (activeTab === 'liProcessin') {
        // 移除默认激活类
        $('#myTab li.active').removeClass('active in');
        $('#tab_content1').removeClass('active in');
        // 激活目标标签页和对应内容
        $('#liProcessin').addClass('active in');
        $('#tab_content2').addClass('active in');
        // 更新aria属性
        $('#home-tab').attr('aria-expanded', 'false');
        $('#profile-tab').attr('aria-expanded', 'true');
    }
});

注意:Bootstrap标签页需要同时处理标签项(<li>)和对应的内容面板(tab_content),只设置<li>的类无法完成完整的标签切换,必须同步更新内容面板的状态。

内容的提问来源于stack exchange,提问作者JL_Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:05:11