You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在表格右键菜单中使用指定列的数值

解决方案:获取隐藏列ID并用于会员详情跳转

当然可以实现!核心思路是在右键菜单触发时,定位到当前点击的会员行,提取第一列的隐藏ID,然后在点击「View」选项时用这个ID拼接详情页URL。下面是具体的修改步骤和完整代码:

1. 右键触发时获取会员ID

contextmenu事件中,我们需要找到右键点击对应的表格行,然后提取第一列的ID值:

  • 通过closest('tr')从点击的元素(单元格)向上定位到所在行
  • find('td:first')获取第一列(隐藏列)的内容,并存到变量中备用

2. 点击「View」时使用ID跳转

在菜单的点击事件中,取出之前存储的ID,拼接成正确的详情页URL即可。

修改后的完整代码

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.js"></script>
<ul class='custom-menu'>
<li data-action="View">View</li>
<li data-action="Renew">Renew</li>
<li data-action="Amend">Amend</li>
</ul>
<!-- 示例表格结构(第一列隐藏) -->
<table>
  <tr>
    <td style="display:none">12345</td> <!-- 隐藏的记录ID列 -->
    <td>John Doe</td>
    <!-- 其余11列会员信息 -->
  </tr>
  <tr>
    <td style="display:none">67890</td>
    <td>Jane Smith</td>
    <!-- 其余11列会员信息 -->
  </tr>
</table>
</body>
</html>
<script>
// 存储当前右键点击的会员ID
let currentMemberId = '';

// Trigger action when the contexmenu is about to be shown
$(document).bind("contextmenu", function (event) {
  // Avoid the real right-click menu
  event.preventDefault();
  
  // 定位到当前点击的表格行,提取第一列的隐藏ID
  const $targetRow = $(event.target).closest('tr');
  currentMemberId = $targetRow.find('td:first').text().trim();
  
  // Show custom menu at mouse position
  $(".custom-menu").finish().toggle(100).css({ 
    top: event.pageY + "px", 
    left: event.pageX + "px" 
  });
});

// Hide menu when clicking outside of it
$(document).bind("mousedown", function (e) {
  if (!$(e.target).parents(".custom-menu").length > 0) {
    $(".custom-menu").hide(100);
  }
});

// Handle menu item clicks
$(".custom-menu li").click(function(){
  const action = $(this).attr("data-action");
  
  switch(action) {
    case "View": 
      // 用获取到的ID拼接详情页URL并打开
      window.open(`https://url/memb-details-all/${currentMemberId}`); 
      break;
    case "Renew": 
      alert("Renew"); 
      break;
    case "Amend": 
      alert("Amend"); 
      break;
  }
  
  // Hide menu after action is triggered
  $(".custom-menu").hide(100);
});
</script>

关键说明

  • 我补充了表格示例结构,确保你的表格是<tr>包含<td>的标准格式,第一列通过display:none隐藏
  • 使用let currentMemberId存储当前ID,避免全局变量污染的同时保证可以在菜单点击事件中访问
  • 修正了原代码中URL拼接的语法错误(原写法会直接报错,改用模板字符串拼接更简洁)
  • 如果你的第一列是用CSS类(比如.hidden-id)隐藏的,只需要把find('td:first')改成find('.hidden-id')即可适配

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

火山引擎 最新活动