我试图使用最接近的方式获取表单元素值。这里有一些示例代码。
<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();
我有什么想法可以获得表单值?
提前致谢
答案 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();