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

通过文本链接触发Bootstrap下拉菜单异常:ID正确却触发错误菜单

解决Bootstrap下拉菜单触发错误的问题

嘿,我刚碰到和你一模一样的离谱问题!点击带.dd类的文本链接时,控制台明明打印出了正确的目标ID(比如dropdownMenuButton2),但实际弹出来的却是第一个下拉菜单dropdownMenuButton1,折腾了好一会儿才找到原因。

先贴一下你的代码方便大家对照:

$('.dd').on('click', function (e) {
  e.stopPropagation();
  var id = $(this).attr('id');
  console.log('trying to trigger '+id);
  $('#'+id).dropdown('toggle');
});

你引入的是jQuery 3.2.1 Slim版,搭配Bootstrap的相关脚本。

问题根源

罪魁祸首就是jQuery Slim版本!Slim版为了轻量化砍掉了不少功能,其中就包括event.relatedTarget属性——而Bootstrap的下拉组件恰恰依赖这个属性来精准识别哪个元素触发了下拉操作。当你用$('#'+id).dropdown('toggle')调用时,Slim版jQuery没法正确传递触发源,Bootstrap就只能默认选中页面里的第一个下拉元素了。

两个快速解决办法

方法1:换成完整版jQuery

把你当前的Slim版jQuery替换成完整版,比如:

<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>

完整版包含所有Bootstrap需要的核心模块,下拉组件就能正常识别触发元素了。

方法2:直接操作当前元素(不用换jQuery)

如果不想更换jQuery版本,修改你的点击事件代码,直接用当前点击的DOM元素调用dropdown方法,跳过通过ID重新查找的步骤:

$('.dd').on('click', function (e) {
  e.stopPropagation();
  var id = $(this).attr('id');
  console.log('trying to trigger '+id);
  // 直接用$(this)操作当前点击的元素
  $(this).dropdown('toggle');
});

这样绕开了jQuery Slim的限制,直接操作你点击的那个元素,自然就能触发对应的下拉菜单了。

亲测这两种方法都能解决问题,你可以试试!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:49:03