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

Bootstrap 3.3.1升级到4.6.0后动态标签页随机加载异常问题

问题根因
  • Bootstrap 4.x 与 3.x 的标签页类名规则、DOM结构要求差异较大,你沿用了3.x的类名绑定逻辑,同时自定义的激活逻辑和Bootstrap原生逻辑冲突,是出现随机加载异常的核心原因
  • 缺失Bootstrap 4标签页要求的基础类nav-item、nav-link,导致部分动态生成的标签事件绑定失败
  • Bootstrap 4中激活状态的标签面板需要同时携带active和show两个类,你只加了active类,会导致部分面板显示异常
修复步骤

1. 修正标签导航代码

给<li>添加nav-item类,给<a>添加nav-link类,同时将active类从<li>转移到<a>标签上,修改后代码如下:

<div id="divRiskLOBs" class="width100p">
    <ul class="nav nav-tabs">
        @if (Model.RiskLOBList != null)
        {
            int i = 0;
            foreach (var item in Model.RiskLOBList.Where(x => x.Parent_ID == null))
            {
                string activeClass = "";
                if (!string.IsNullOrWhiteSpace(Model.RiskCoverageTabID) && item.LOB_ID_EN == Model.RiskCoverageTabID)
                {
                    activeClass = "active";
                }
                else if (string.IsNullOrWhiteSpace(Model.RiskCoverageTabID) && i == 0)
                {
                    activeClass = "active";
                }
                <li class="nav-item">
                    <a href="#@item.LOB_ID_EN" class="aTab nav-link @activeClass" data-toggle="tab" data-id="@item.LOB_ID_EN">
                    </a>
                </li>
                i++;
            }
            <li class="nav-item">
                <a href="#tabExceptions" class="aTab nav-link" data-toggle="tab" data-id="" id="aExceptions1"><strong>Exceptions</strong></a>
            </li>
        }
        <li id="liActivity" class="nav-item">
            <a href="#tabActivity" class="aTab nav-link" data-toggle="tab" data-id="" id="aRequestActivity"><strong>Activity</strong></a>
        </li>
        <li id="liDocuments" class="nav-item">
            <a href="#tabDocuments" class="aTab nav-link" data-toggle="tab" data-id="" id="aDocuments"><strong>Documents</strong></a>
        </li>
    </ul>
</div>

2. 修正标签面板代码

激活状态的tab-pane同时添加active和show类,修改后代码如下:

<div class="tab-content mb30">
    @if (Model.RiskLOBList != null)
    {
        int j = 0;
        foreach (var item in Model.RiskLOBList.Where(x => x.Parent_ID == null))
        {
            string activeClass = "";
            if (!string.IsNullOrWhiteSpace(Model.RiskCoverageTabID) && item.LOB_ID_EN == Model.RiskCoverageTabID)
            {
                activeClass = "active show";
            }
            else if (string.IsNullOrWhiteSpace(Model.RiskCoverageTabID) && j == 0)
            {
                activeClass = "active show";
            }
            <div class="tab-pane @activeClass" id="@item.LOB_ID_EN">
                <div class="col-sm-4">
                </div>
                <div class="col-sm-8 align-right mb10 divRiskActionButton">
                   ///my code
                </div>
            </div>
            j++;
        }
        <div class="tab-pane row" id="tabExceptions">
               //my code
        </div>
    }
    <div class="tab-pane" id="tabActivity">
        //my code
    </div>
    <div class="tab-pane" id="tabDocuments">
        //my code
    </div>
</div>

3. 删除自定义的标签激活JS

你额外写的如下点击事件会和Bootstrap原生的tab切换逻辑冲突,直接删除即可:

// 整段删除以下代码
$(document).on("click", ".nav-tabs li a", function (e) {
    $(".nav-tabs li").removeClass("active");
    $(this).parent().addClass("active");
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:36:01