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

动态表格TD父元素获取报错,如何获取上方行数据?

问题解决与代码修正

错误原因

你遇到的$(this).parent不是已定义函数错误,大概率是因为动态拼接HTML时使用了HTML实体(&lt;/&gt;),导致生成的不是<tr>/<td>DOM元素,而是纯文本节点,最终绑定事件的元素不符合预期。另外原代码逻辑也没实现“获取上方行文本”的需求。

修正后的代码

JavaScript 部分

$("#MyTable").on('click', '.MakeNewTableRow', function() {
  var thisRow = $(this).closest("tr");
  // 直接使用HTML标签,无需实体转义
  thisRow.after("<tr><td>click me</td></tr>");
  thisRow.next().find("td:first").addClass('ShowTheTDValue');
});

$("#MyTable").on('click', '.ShowTheTDValue', function() {
  // 获取当前点击元素所在行的上一行,提取目标文本
  var upperRowText = $(this).closest("tr").prev().find("td:first").text();
  alert(upperRowText);
});

HTML 部分

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id='MyTable'>
  <tr>
    <td class='MakeNewTableRow'>whatever</td>
  </tr>
</table>

关键说明

  • 修正HTML拼接逻辑:JavaScript中拼接HTML结构时,直接写<tr>而非&lt;tr&gt;,否则浏览器会把实体字符当成纯文本渲染,无法生成正确的DOM元素。
  • 获取上方行文本:通过$(this).closest("tr")定位当前点击元素所在的行,再用prev()获取它的上一行,最后通过find("td:first").text()提取目标行的文本内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:10:22