我有一个表(表的id是county_table),有很多这样的行:
<tr>
<td><input class="text" type=text name=param1 maxlength=2 size=2></td>
<td><select class="text" name=param2><option value=1>Live<option value=2>Test</select></td>
<td><input class="text" type=text name=param3 ></td>
<td><input class="text" type=text name=param4 ></td>
<td><input class="text" type=text name=param5 ></td>
<td><input class="text" type=text name=param6 ></td>
<td colspan=2><input class="button" type=submit value=New onclick="function_new($('#county_table tr:eq(1)'))"></td>
</tr>
onclick函数将管理表数据,并可能发送一个AJAX,所以我需要获取表的所有元素。
该解决方案的不好之处在于,如果我插入一个新行,整个表行选择将会搞砸,所以我想更改tr:eq(1)
,例如this.tr
或类似的东西,按钮是否知道他的祖先并得到给定的对象?
我将不胜感激。
答案 0 :(得分:2)
您可以使用closest()获取单击按钮的父级tr。
var trOfButton = $(this).closest('tr');
最接近的描述:对于集合中的每个元素,获取第一个元素 通过测试元素本身和匹配选择器的元素 遍历DOM树中的祖先Reference。
答案 1 :(得分:1)
您可以使用:
- $(this).closest('tr');
OR
- $(this).parent().parent();
.closest()会给你最接近按钮的tr,而.parent()将返回父元素(td),并且它的父元素将再次返回该行
答案 2 :(得分:1)
我建议您使用$(this).parent().parent()
以获得更好的效果。
http://jsperf.com/parentparentvsclosest/2
但如果您正在寻找代码简洁性,那么您可以选择$(this).closest('tr')
。