使用jQuery无法获取HTML表格中QTY输入框所在列的索引或表头名
问题分析与解决方案
问题原因
你的代码存在两个核心问题:
- 事件绑定在
#table-id表格元素上,此时$(this)指向的是整个表格,不是触发事件的输入框,所以$(this).closest("td")无法定位到输入框所在的单元格,导致索引计算错误。 index是jQuery的方法,需要通过.index()调用,而不是直接访问属性index。
修复后的代码
获取列索引
$('#table-id').on('keypress', 'input', function (ev) { var keycode = ev.keyCode || ev.which; if (keycode === 13) { // 获取当前输入框所在的td var $td = $(this).closest('td'); // 获取该td在父行中的列索引(从0开始) var columnIndex = $td.index(); console.log('列索引:', columnIndex); } });
获取表头名称(QTY)
如果需要直接获取表头文本,可在获取列索引后,找到对应表头单元格的内容:
$('#table-id').on('keypress', 'input', function (ev) { var keycode = ev.keyCode || ev.which; if (keycode === 13) { var $td = $(this).closest('td'); var columnIndex = $td.index(); // 获取表格的thead行,找到对应索引的表头单元格文本 var headerText = $('#table-id thead tr th').eq(columnIndex).text().trim(); console.log('表头名称:', headerText); } });
关键说明
- 事件委托到表格内的
input元素,确保$(this)指向触发回车事件的输入框。 - 使用函数参数
ev获取按键码,避免依赖全局event对象的兼容性问题。 - 通过
eq(columnIndex)精准定位对应索引的表头单元格,再用text()获取文本内容。
内容的提问来源于stack exchange,提问作者Rauf Abid
相关产品推荐
相关产品推荐

