我有这个简单的表(嵌套)
<table border="1px">
<tr>
<th>kkkk</th>
<th>mmmm</th>
</tr>
<tr>
<td>a</td>
<td>a</td>
</tr>
<tr>
<td>a</td>
<td>a</td>
</tr>
<tr>
<td>a</td>
<td>
<table border="1px" style="margin:10px">
<tr>
<th>xxxx</th>
<th style="background-color:yellow">yyyy</th>
</tr>
<tr>
<td>a</td>
<td>a</td>
</tr>
<tr>
<td>a</td>
<td>a</td>
</tr>
<tr>
<td >a</td>
<td style="background-color:red;" class="theTd">a</td>
</tr>
</table>
</td>
</tr>
</table>
(这里没有任何表ID)
我想点击red
区域,找到yellow
值中的行。
我没有获得TH
索引的问题。
问题在于我只想通过Parents()
方法执行此操作 - 红色框看到 2 parents TR's
,其中TH
.... xxx,yyy行和kkk,mmm行...
类似的东西:
alert( $(".theTd").parents("first tr parent which contains th's").....);
正确的Selector语法是什么?
http://jsbin.com/udohum/1/edit
我不想要普通的父()。parent()....因为.theTd
可以在其中包含一个包装器Div等... - 所以父母这将是DIV。 (这会伤害逻辑......)
答案 0 :(得分:0)
这样的事情怎么样?
$('.theTd').click(function(){
alert($(this).parent().parent().find('tr > th:nth-child(2)').html());
});
(参见此处:http://jsfiddle.net/Te3QB/1/)
更新:使用.closest()
选择器可能会更好:
$('.theTd').click(function(){
alert($(this).closest('table').find('tr > th:nth-child(2)').html());
});
.closest()
获取与选择器匹配的第一个元素,从当前元素开始并逐步向上遍历DOM树。
答案 1 :(得分:0)
parents()
选择所选元素的所有父级,您可以使用parentsUntil
代替:
$(".theTd").parentsUntil('table').find('th[style^=background]')
或closest()
方法:
$(".theTd").closest('table').find('tr:has("th")').foo()
答案 2 :(得分:0)
要获得tr,请尝试以下方法:
$(".theTd").closest("table").find("tr");
这有点混乱。我们需要nth-child,为此我们需要索引:
$(this).closest('table').find('tr th:nth-child('+ ($(this).index()+1) +')');