Jquery最接近元素值

时间:2010-07-08 16:04:59

标签: jquery input closest

我试图使用最接近的方式获取表单元素值。这里有一些示例代码。

<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();

我有什么想法可以获得表单值?

提前致谢

2 个答案:

答案 0 :(得分:13)

假设每个tr只有一个.hour个元素,这样就可以了:

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

closest会:

  

获得第一个祖先元素   匹配选择器,从...开始   当前要素和进步   通过DOM树。

所以,你需要去tr,并从那里找到.hour后代。

答案 1 :(得分:1)

扩展Karim79的答案:

.closest()向上移动DOM树,直到找到匹配项。它不适用于同一级别的元素 - 例如在您的情况下(所有元素都有一个td作为父级)。

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

要在你的情况下使用nearest(),你必须使用(这在这里有点过分):

$(this).closest("tr").find(".hour").val();