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

如何在Bootstrap 5中获取当前激活的选项卡ID?

问题原因

你使用document.querySelector()仅会匹配到第一个符合button[data-bs-toggle="tab"]规则的选项卡按钮,仅为该元素绑定了shown.bs.tab事件,其余选项卡按钮没有绑定对应监听事件,因此只有点击第一个选项卡时能拿到ID,其余选项卡触发切换时没有对应的回调执行。

解决方案

方案1:遍历所有选项卡按钮绑定事件

获取所有带tab切换属性的按钮,遍历为每个按钮单独绑定事件监听:

// 获取所有选项卡切换按钮
const tabEls = document.querySelectorAll('button[data-bs-toggle="tab"]')
// 遍历绑定事件
tabEls.forEach(tabEl => {
  tabEl.addEventListener('shown.bs.tab', function (event) {
    // 激活的选项卡按钮ID
    const activeBtnId = event.target.id
    // 如需获取对应展示的tab面板ID,可使用如下代码
    // const activePaneId = event.target.dataset.bsTarget.slice(1)
    alert(activeBtnId)
  })
})

方案2:使用事件委托(更高效)

直接给选项卡的父容器绑定事件,利用事件冒泡机制捕获所有子选项卡触发的切换事件,无需遍历绑定:

document.querySelector('#myTab').addEventListener('shown.bs.tab', function (event) {
  const activeBtnId = event.target.id
  alert(activeBtnId)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:36:03