Bootstrap 5导航栏下拉菜单点击无法展开问题排查
问题根因
你的Supporting Tables下拉菜单点击无响应,核心原因是Bootstrap CSS与JS版本不匹配+组件属性写法混用+脚本加载时机错误,不需要引入额外外部样式表,修改几处配置即可修复,完全不会破坏你现有页面的自定义样式。
你当前代码存在3个明确问题:
- 版本不兼容:你引入的Bootstrap JS是5.2.0-beta1版本,但本地的
bootswatch_darkly.css是Bootstrap 4.x版本的Darkly主题,两个大版本的组件交互规则、属性命名、JS触发逻辑完全不一致,下拉组件的事件无法匹配触发。从你导航栏汉堡按钮的写法(使用了data-toggle、data-target这类Bootstrap4专属属性,而你下拉菜单写的是Bootstrap5要求的data-bs-toggle属性)就能看出明显的版本混用痕迹。 - 脚本加载时机错误:你把Bootstrap的JS文件放在了
<head>标签内,没有加延迟加载配置,脚本执行时页面的DOM元素还没渲染完成,无法给下拉按钮绑定点击事件。 - 组件属性不符合版本规范:导航栏折叠按钮用了旧版4.x的属性名,不仅下拉失效,后续移动端视图下点击汉堡菜单也无法展开导航。
修复步骤
按顺序修改即可,不需要改动你已有的自定义样式、toastr、bootstrap-icons等引用:
- 统一版本:将本地旧的Bootstrap4版本
bootswatch_darkly.css替换为和JS版本匹配的Bootstrap 5.2版本Darkly主题样式,原有视觉风格完全一致,不会出现样式覆盖问题。 - 修正导航折叠按钮属性:把旧版4.x的属性名替换为Bootstrap5要求的带
bs-前缀的写法,修改后的按钮代码如下:
仅需把原代码的<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button>data-toggle改为data-bs-toggle、data-target改为data-bs-target即可。 - 修正脚本加载配置,二选一即可:
- 方案一:把
<head>里引入bootstrap.bundle.min.js的script标签整体移动到</body>闭合标签之前(所有页面内容的最末尾),等DOM渲染完成后再加载执行脚本。 - 方案二:保留脚本在head内的位置,给script标签加
defer属性,让脚本等DOM解析完成后再执行,修改后代码:<script defer src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
- 方案一:把
- 补全下拉菜单标签规范(可选,避免兼容问题):Bootstrap下拉菜单的选项推荐用
<li>包裹,你当前直接在<ul>下放置<a>标签在部分浏览器下可能出现样式偏移,修改后代码:<ul class="dropdown-menu" aria-labelledby="navbarDropdown"> <li><a class="dropdown-item" asp-area="" asp-page="/MDSpecialties/Index">MD Specialities</a></li> <li><a class="dropdown-item" asp-area="" asp-page="/ResCategories/Index">Residence Categories</a></li> </ul>
修改完成后刷新页面,下拉菜单即可正常展开,移动端导航折叠功能也会同步恢复,原有页面样式不会被改动。
内容的提问来源于stack exchange,提问作者MelB
相关产品推荐
相关产品推荐

