$(this).parents('table:first > tbody > tr')
和
$(this).parents('table:first').children('tbody').children('tr')
答案 0 :(得分:13)
不同之处在于第一个选择器完全在parents
调用内,而第二选择器则不在。{/ p>
因此,第一个查找this
匹配table:first > tbody > tr
的所有父母。 (换句话说,tr
包含this
中的table
第二个会找到匹配this
的{{1}}的父级,然后直接在该父级的table:first
内找到所有tr
个。 (换句话说,直接在父表中的所有tbody
)
答案 1 :(得分:4)
也许一个例子会有所帮助......从这个HTML开始
<table border=1>
<thead>
<th>Outter Table</th>
</thead>
<tbody>
<tr><td>1</td></tr>
<tr>
<td>
<table border=1 width=100>
<thead>
<th>Inner Table</th>
</thead>
<tbody>
<tr><td>2a</td></tr>
<tr><td class="test">2b</td></tr>
<tr><td>2c</td></tr>
</tbody>
</table>
</td>
</tr>
<tr><td>3</td></tr>
</tbody>
</table>
应用此脚本:
$('.test').parents('table:first > tbody > tr').addClass('foo');
$('.test').parents('table:first').children('tbody').children('tr').addClass('bar');
结果:
<table border="1">
<thead>
<th>Outter Table</th>
</thead>
<tbody>
<tr class="foo"><td>1</td></tr>
<tr class="foo">
<td>
<table width="100" border="1">
<thead>
<th>Inner Table</th>
</thead>
<tbody>
<tr class="bar"><td>2a</td></tr>
<tr class="bar"><td class="test">2b</td></tr>
<tr class="bar"><td>2c</td></tr>
</tbody>
</table>
</td>
</tr>
<tr class="foo"><td>3</td></tr>
</tbody>
</table>