我有一系列带表格数据的嵌套表。这些表是3深,所以有一个主表保存整个结构,一些中间表保存主表的各个部分,数据表包含实际数据。
这个想法是当一个元素注册一个键事件时,就会对注册了该键事件的数据行进行计算。
数据表的结构大致如下:
<table id="someDataTable">
<tbody>
<tr>
<td >Some Title</td>
<td >Units</td>
<td >Val/Unit</td>
<td >Value</td>
</tr>
<tr>
<td><input type="text" size="30" /></td>
<td><input type="text" size="14" class="units"/></td>
<td><input type="text" size="14" class="value"/></td>
<td><input type="text" size="14" readonly="readonly" class=total"/></td>
</tr>
...
</tbody>
</table>
表id当然是唯一的。
粗略的想法是'units * value = total',但行数很多(它们是按需动态生成的,但我认为这不重要)。
我的想法是使用以下方法捕获主表中的所有按键:
function initialize() {
$(document).on('keypress', '#tblMasterTable', DoMathForRow);
}
然后调用一个可以对所有数据表进行数学运算的通用函数。这个想法是用'this'作为识别手段......
function DoMathForRow() {
tKeyedBox = this;
//Do Things Here
}
基本上,我希望'this'会返回输入的输入框,所以我可以有效地说
tKeyedBox.parent().parent()
如果有按键事件,可以访问确切的行。从那里开始休息很容易。
但是,'this'返回整个主表,这是非常不幸的。
我的问题如下:如何检索有按键事件的输入框(或单元格或行 - 绝对识别的东西)。
我对jQuery很陌生,所以我在构建我的选择语句方面非常平庸,我觉得这可能是一个过去可能已经回答的简单问题,但我无法得到我的信息。寻找其他问题。谢谢你的耐心等待!
答案 0 :(得分:3)
在选择器中深入挖掘一个级别,只有在input
上按下时才会注册按键
$(document).on('keypress', '#tblMasterTable input[type="text"]', DoMathForRow);
this
现在会引用您的input
,而不是您的表格。