<ul class="nav nav-pills" id="my_tabs">
   <li class="nav-item" role="presentation"> 
     <a class="nav-link active" data-bs-toggle="pill" href="#tab1" aria-selected="true">Tab 1</a> 
   </li>
   <li class="nav-item" role="presentation"> 
     <a class="nav-link" data-bs-toggle="pill" href="#tab2" aria-selected="false">Tab 2</a> 
   </li>
</ul>
      
<section class="tab-content" id="tab-content">
   <div class="tab-pane active" id="tab1" role="tabpanel">
     Tab 1
   </div>
   <div class="tab-pane" id="tab2" role="tabpanel">
     Tab 2
   </div>
</section>

如何在刷新页面后保持活动选项卡?我已经找过了,但没有找到解决方案.先谢谢你.

推荐答案

您将需要使用JavaScript,而不是数据属性.

因此为initiate tab with JavaScript,然后在每次单击时,将活动选项卡ID存储在本地存储中.

在第一次加载时,从本地存储获取活动选项卡ID,并将其激活,或设置默认的活动选项卡ID.

示例

(注意:本地存储在这里不起作用,但它应该在本地起作用,即在允许保存到本地存储的地方):

const triggerTabList = document.querySelectorAll('#my_tabs a');

triggerTabList.forEach(triggerEl => {

  const tabTrigger = new bootstrap.Tab(triggerEl);

  triggerEl.addEventListener('click', event => {

    event.preventDefault();
    tabTrigger.show();

    // save tab target
    localStorage.setItem('active-tab', event.target.getAttribute('href'));

  });
});

// get the active tab id, set default
const activeTabId = localStorage.getItem('active-tab') || '#tab1';

// find the element that triggers the tab
const activeTab = [...triggerTabList].find(el => el.getAttribute('href') === activeTabId);

// click the element to trigger the tab
// in case it's not found, click the first tab
if (activeTab) {
  activeTab.click();
} else {
  triggerTabList[0].click();
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>


<ul class="nav nav-pills" id="my_tabs">
  <li class="nav-item" role="presentation">
    <a class="nav-link" href="#tab1" aria-selected="true">Tab 1</a>
  </li>
  <li class="nav-item" role="presentation">
    <a class="nav-link" href="#tab2" aria-selected="false">Tab 2</a>
  </li>
</ul>

<section class="tab-content" id="tab-content">
  <div class="tab-pane" id="tab1" role="tabpanel">
    Tab 1
  </div>
  <div class="tab-pane" id="tab2" role="tabpanel">
    Tab 2
  </div>
</section>

Javascript相关问答推荐

详细说明如何以图表方式改变仪表的范围和 colored颜色

以逗号分隔的列表来数组并填充收件箱列表

鼠标移动时更新画布

是什么原因导致此Angular 16应用程序中类型错误时属性结果不存在?

在贝塞尔曲线的直线上找不到交叉点:(使用@Pomax的bezier.js)

按钮未放置在html dis位置

如何在Angular中插入动态组件

JQuery. show()工作,但. hide()不工作

如何在Javascript中的控制台上以一行形式打印循环的结果

在我的html表单中的用户输入没有被传送到我的google表单中

在react JS中映射数组对象的嵌套数据

如何在JavaScript文件中使用Json文件

还原器未正确更新状态

try 使用javascript隐藏下拉 Select

如何发送从REST Api收到的PNG数据响应

面对代码中的错误作为前端与后端的集成

如何在FiRestore中的事务中使用getCountFromServer

我为什么要使用回调而不是等待?

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面

我在哪里添加过滤器值到这个函数?