5

最接近を使用してフォーム要素の値を取得しようとしています。ここにいくつかのサンプルコードがあります。

<table>
  <tr>
    <td>Hour <input type="input" value="12" name="data[hour]" class="hour" /></td>
    <td>Minute <input type="input" value="12" name="data[minute]" class="minute" /></td>
    <td><a href="#" class="add-data">Add Row</a></td>
  </tr>
</table>

フォームは大きなフォームの一部であるため、シリアル化できません。複数の行を追加できるため、[行の追加]リンクに最も近い各入力を取得する必要があります。

私が試してみました

var hour = $(this).closest('.hour').val();    
var hour = $(this).closest('input', '.hour').val();
var hour = $(this).closest('input[name="data[hour]]").val();

フォームの値を取得する方法はありますか?

前もって感謝します

4

2 に答える 2

13

.hourtrごとに要素が1つしかない場合、これで次のようになります。

var hour = $(this).closest('tr').find('.hour').val();

closest意思:

現在の要素から始まり、DOMツリーを上に向かって、セレクターに一致する最初の祖先要素を取得します。

だから、あなたはtrに上って行く必要があり、そこから.hour子孫を見つける。

于 2010-07-08T16:07:00.827 に答える
1

Karim79の答えを拡張するには:

.closest()は、一致するものが見つかるまでDOMツリーを上に移動します。同じレベルの要素では機能しません-あなたの場合のように(すべての要素は親としてtdを持っています)。

http://api.jquery.com/closest/

あなたの状況でclosest()を使用するには、使用する必要があります(これはここでは少しやり過ぎです):

$(this).closest("tr").find(".hour").val();
于 2010-07-08T16:12:36.257 に答える