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

如何在页面重载后保持Tailwind CSS+Midone组件的当前标签页激活?

实现Midone标签页页面重载后保持选中状态

问题背景

使用基于Tailwind CSS的Midone组件标签页,需要实现用户提交数据触发页面重载后,仍保持之前选中的标签页状态。现有标签页代码如下:

<div class="mt-10 w-full box">
    <div class="p-2">
        <ul class="nav nav-link-tabs" role="tablist" id="myTab">
            <li id="tab-products-li" class="nav-item flex-1" role="presentation">
                <button class="nav-link w-full py-2 active"
                        data-tw-toggle="pill"
                        data-tw-target="#tab-products"
                        type="button"
                        role="tab" aria-controls="example-tab-3" aria-selected="true"><i class="fa-solid fa-boxes-stacked h-4 w-4 mr-2"></i>Produk
                </button>
            </li>
            <li id="tab-stores-li" class="nav-item flex-1" role="presentation">
                <button class="nav-link w-full py-2"
                        data-tw-toggle="pill"
                        data-tw-target="#tab-stores"
                        type="button"
                        role="tab" aria-controls="example-tab-4" aria-selected="false"><i class="fa-solid fa-store h-4 w-4 mr-2"></i>Lapak
                </button>
            </li>
        </ul>
        <div class="tab-content mt-5">
            <div id="tab-products" class="tab-pane leading-relaxed active" role="tabpanel"
                 aria-labelledby="example-3-tab">
                <div class="overflow-x-auto">
                    tab 1
                </div>
            </div>
            <div id="tab-stores" class="tab-pane leading-relaxed" role="tabpanel"
                 aria-labelledby="example-3-tab">
                <div class="overflow-x-auto">
                    tab 2
                </div>
            </div>
        </div>
    </div>
</div>

实现方案

1. 监听标签切换,保存选中状态到本地存储

利用Midone提供的show.tw.tab事件,在用户切换标签时,将当前选中的标签ID存入localStorage:

const tabContainer = document.getElementById('myTab');

tabContainer.addEventListener('show.tw.tab', function(event) {
    const activeTabId = event.target.getAttribute('data-tw-target');
    localStorage.setItem('activeMidoneTab', activeTabId);
});

2. 页面加载时恢复标签选中状态

页面重载完成后,读取本地存储中保存的标签ID,调用Midone的Tab实例方法切换到对应标签:

document.addEventListener('DOMContentLoaded', function() {
    const savedTabId = localStorage.getItem('activeMidoneTab');
    
    if (savedTabId) {
        const tabInstance = tailwind.Tab.getOrCreateInstance(document.getElementById('myTab'));
        const targetTabButton = document.querySelector(`[data-tw-target="${savedTabId}"]`);
        tabInstance.show(targetTabButton);
    }
});

关键注意事项

  • 修正了原HTML中<li>元素与<div class="tab-pane">元素ID重复的问题,避免DOM选择器冲突;
  • 若需要会话级临时保存(关闭浏览器即失效),可将localStorage替换为sessionStorage;
  • 若表单通过AJAX异步提交无需页面重载,可直接处理表单逻辑,无需上述本地存储操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:20:43