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

点击表格任意行仅显示首行下拉菜单的问题修复咨询

问题修复方案:表格行下拉菜单仅首行生效的问题

这问题我之前也碰到过!核心原因很简单:你在PHP循环里给所有下拉菜单用了同一个ID this,而HTML规范里ID必须是页面唯一的——浏览器在查找ID时只会返回第一个匹配的元素,所以不管你点哪一行的按钮,JS都只会操作第一行的下拉菜单。

下面是具体的修复步骤:

1. 移除重复的ID,改用类名定位

把循环生成的下拉菜单的id="this"删掉,只保留类名就行(本来就有dropdown-menu类,足够用来定位了):

<!-- PHP循环生成的表格行代码 -->
<tr>
  <td>
    <ul class="icons-list">
      <li class="dropdown">
        <a href="#" class="here">Click me</a>
        <!-- 去掉重复ID,保留类名 -->
        <ul class="dropdown-menu dropdown-menu-right">
          <li><input type="submit" value="Edit"></li>
        </ul>
      </li>
    </ul>
  </td>
</tr>

2. 调整JS事件处理,用相对选择器定位当前行的下拉菜单

你原来的JS事件绑定语法也有点小问题(多传了'tr'参数),而且不能再用ID查找。改成通过当前点击的元素去遍历DOM,找到对应的下拉菜单:

$('#table tbody').on('click', '.here', function (e) {
  e.preventDefault(); // 阻止a标签默认的跳转行为
  // 从当前点击的.here元素出发,找到它所在的dropdown容器,再定位下拉菜单
  $(this).closest('li.dropdown').find('.dropdown-menu').toggle();
});

代码解释:

  • e.preventDefault():避免点击<a>标签时页面跳转到顶部(因为href是#)。
  • $(this).closest('li.dropdown'):向上查找最近的li.dropdown父元素,确保只针对当前行的下拉容器。
  • .find('.dropdown-menu'):在这个容器里找到对应的下拉菜单,然后执行toggle()显示/隐藏。

这样修改后,不管你点击哪一行的Click me按钮,只会切换当前行的下拉菜单,不会再影响其他行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:06:56