我正在尝试从包含子表的表中选择<tr>
元素,以便仅从表中检索<tr>
元素而不是子表,因此我无法使用find()
方法。另一个挑战是表格可能有<tbody>
,也可能没有children()
,因此我无法使用<table id='table1' class='toptable'>
<tbody>
<tr><td>
<table class='subtable'>
<tr></tr>
</table>
</td></tr>
</tbody>
</table>
<table id='table2' class='toptable'>
<tr><td>
<table class='subtable'>
<tr></tr>
</table>
</td></tr>
</table>
。
HTML代码
<tr>
到目前为止的解决方案
我找到了一种从表中选择tbody
元素的方法(无论它们是否有<tr>
),而没有使用子选择器{{1}从子表中选择>
元素}}
$('#table1 > tbody > tr).length // -> 1
$('#table2 > tbody > tr).length // -> 1
问题
如何将上面的选择器转换为我能够应用于表对象的单个方法,允许我通过table.toptable
集合进行迭代并对两个表重用相同的方法? (见下文)
$('.toptable').each(function(){
$(this).({trs-from-table}).each( ... );
});
的jsfiddle
答案 0 :(得分:2)
这应该可行:
$('.toptable > tbody > tr')....
即使您没有添加明确的<tbody>
,浏览器应自动为您插入一个。
请参阅http://jsfiddle.net/alnitak/reDux/1/
或者,如果您想处理特定的表元素$el
:
$el.children('tbody').children('tr');
e.g:
$('.toptable').each(function() {
$(this).children('tbody').children('tr')...
});
答案 1 :(得分:0)
你需要:
$('tr:has(table)')
这会为您提供一个包含<tr>
元素的<table>
元素集。