使用jQuery获取动态生成表格点击行单元格值无返回值问题求解
问题排查
- 核心错误:选择器不匹配
你调用$row.find(".nr").text()获取内容,但你动态生成的单元格class统一为colDAT,页面中不存在.nr类的元素,因此返回空值。 - 冗余代码
你的点击事件目标就是tr元素,$(this)本身就是被点击的行对象,不需要额外调用closest("tr")查找父级行。 - 代码细节问题
- 循环生成表格行时,所有行都用了相同的id
rowDAT,违反HTML id全局唯一的规范,建议改为class或动态生成唯一id。 - 构造表格的代码中
</tbdoy>是拼写错误,正确应为</tbody>,可能导致表格渲染异常。
修复方案
将获取点击行内容的代码修改为如下版本即可正常取值:
$('#loadQA').on('click', 'tr', function () { // eq(0)对应第一列ID、eq(1)对应第二列问题、eq(2)对应第三列答案,可按需取用 let qaId = $(this).find('.colDAT').eq(0).text(); let question = $(this).find('.colDAT').eq(1).text(); let answer = $(this).find('.colDAT').eq(2).text(); alert(`ID: ${qaId}\n问题: ${question}\n答案: ${answer}`); })
如果仅需要获取第一列的ID值,也可以简化为:
$('#loadQA').on('click', 'tr', function () { let text = $(this).find('th').text(); alert(text); })
内容的提问来源于stack exchange,提问作者bloodymurderlive
相关产品推荐
相关产品推荐

