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

假设每个 tr 只有一个.hour元素,这将做到:

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/

要在您的情况下使用最接近(),您必须使用(这里有点矫枉过正):

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