表形式のデータを含む一連のネストされたテーブルがあります。テーブルは深さ 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は一意です。
大まかなアイデアは、多くの行で「単位 * 値 = 合計」です (必要に応じて動的に生成されますが、それは問題ではないと思います)。
これを可能にする私の考えは、これでマスターテーブルのすべてのキープレスをキャプチャすることでした:
function initialize() {
$(document).on('keypress', '#tblMasterTable', DoMathForRow);
}
次に、すべてのデータ テーブルの計算を実行できるユニバーサル関数を呼び出します。アイデアは、識別の手段として「これ」を使用することでした...
function DoMathForRow() {
tKeyedBox = this;
//Do Things Here
}
基本的に、「this」が入力された入力ボックスを返すことを望んでいたので、効果的に言うことができました
tKeyedBox.parent().parent()
キープレスイベントがあった場合、正確な行にアクセスできます。そこから、残りを簡単に行うことができます。
しかし、'this' はマスター テーブル全体を返します。これは非常に残念なことです。
私の質問は次のとおりです。キープレスイベントがあった入力ボックス(またはセル、または行-絶対に識別できるもの)を取得するにはどうすればよいですか。
私は jQuery にまったく慣れていないので、選択ステートメントを適切に構成するのは非常に平凡であり、これはおそらく過去に答えられた可能性のある簡単な質問だと思いますが、探していた情報を導き出すことができませんでした他の質問。お待ち頂きまして、ありがとうございます!