在jQuery中的keypress上选择较大表中的单个元素

时间:2013-06-12 16:58:49

标签: javascript jquery selection

我有一系列带表格数据的嵌套表。这些表是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很陌生,所以我在构建我的选择语句方面非常平庸,我觉得这可能是一个过去可能已经回答的简单问题,但我无法得到我的信息。寻找其他问题。谢谢你的耐心等待!

1 个答案:

答案 0 :(得分:3)

在选择器中深入挖掘一个级别,只有在input上按下时才会注册按键

$(document).on('keypress', '#tblMasterTable input[type="text"]', DoMathForRow);

this现在会引用您的input,而不是您的表格。