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

Bootstrap 3迁移至Bootstrap 4后nav-item激活状态异常问题

解决Bootstrap 4标签页切换时按钮激活状态不重置的问题

我一眼就看出问题出在你的标签导航结构上——Bootstrap 4的nav-tabs组件对DOM层级有严格要求,你的写法破坏了它的原生交互逻辑。

问题根源

Bootstrap 4的标签页JS会默认监听直接挂载在.nav容器下的.nav-item元素,而你把每个带.nav-item类的<a>标签放在了额外的.col-sd-4(顺便纠正下:Bootstrap 4里没有col-sd这个类,应该是col-sm-4或者移动端适配的col-4)div容器里,这就导致JS无法正确识别兄弟项,切换时只能给当前点击的按钮加上active,却没法移除其他按钮的active类。

另外还有个小细节错误:你把.nav-item和.nav-link都加在了同一个<a>标签上,Bootstrap 4的标准结构应该是.nav-item作为父容器,里面嵌套带.nav-link的<a>标签。

修正方案

调整导航部分的DOM结构,把.nav-item直接作为.nav-tabs的子元素,再把列布局类加到.nav-item上,去掉多余的嵌套div;同时修正错误的列类名。

修正后的完整代码

<section id="memberships" class="memberships">
  <div class="container">
    <div class="row d-flex justify-content-center">
      <div class="col-lg-8 text-center">
        <h2 class="header-text">TEST</h2>
        <div class="memberships-mockup">
          <div id="nav-tabContent" class="tab-content">
            <div id="nav-first" role="tabpanel" aria-labelledby="nav-first-tab" class="tab-pane fade show active">
              <p>1111111111</p>
            </div>
            <div id="nav-second" role="tabpanel" aria-labelledby="nav-second-tab" class="tab-pane fade">
              <p>2222222222</p>
            </div>
            <div id="nav-third" role="tabpanel" aria-labelledby="nav-third-tab" class="tab-pane fade">
              <p>3333333333</p>
            </div>
          </div>
        </div>
      </div>
    </div>
    <!-- 修正后的导航部分 -->
    <div id="myTab" role="tablist" class="nav nav-tabs">
      <div class="nav-item col-sm-4">
        <a id="nav-first-tab" data-toggle="tab" href="#nav-first" role="tab" aria-controls="nav-first" aria-expanded="true" class="nav-link active">
          <span class="number">1</span>
        </a>
      </div>
      <div class="nav-item col-sm-4">
        <a id="nav-second-tab" data-toggle="tab" href="#nav-second" role="tab" aria-controls="nav-second" class="nav-link">
          <span class="number">2</span>
        </a>
      </div>
      <div class="nav-item col-sm-4">
        <a id="nav-third-tab" data-toggle="tab" href="#nav-third" role="tab" aria-controls="nav-third" class="nav-link">
          <span class="number">3</span>
        </a>
      </div>
    </div>
  </div>
</section>

额外说明

  • 不需要额外嵌套.row,因为.nav-tabs本身是flex布局,带col-sm-4类的.nav-item会自动均分宽度;
  • 确认你已经正确引入了Bootstrap 4的依赖文件(jQuery、Popper.js和Bootstrap JS),原生标签页交互需要这些文件支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:37:59