0

我正在尝试<tr>从包含子表的表中选择元素,以便仅从表中而不是从子表中检索<tr>元素,因此我不能使用该find()方法。另一个挑战是表格可能有也可能没有,<tbody>因此我不能使用children().

HTML 代码

<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>

到目前为止的解决方案

我找到了一种从表中选择<tr>元素的方法(无论它们是否有tbody),而无需<tr>使用子选择器从子表中选择元素>

$('#table1 > tbody > tr).length // -> 1
$('#table2 > tbody > tr).length // -> 1

问题

如何将上述选择器转换为能够应用于表对象的单个方法,从而允许我遍历table.toptable集合并在两个表中重用相同的方法?(见下文)

$('.toptable').each(function(){
   $(this).({trs-from-table}).each( ... );
});

JSFIDDLE

链接在这里

4

2 回答 2

2

这应该只是工作:

$('.toptable > tbody > tr')....

即使您不添加显式浏览<tbody>器,浏览器也会自动为您插入一个。

http://jsfiddle.net/alnitak/reDux/1/

或者,如果您想处理特定的表格元素$el

$el.children('tbody').children('tr');

例如:

$('.toptable').each(function() {
    $(this).children('tbody').children('tr')...
});
于 2011-06-29T12:54:18.947 回答
0

你需要:

$('tr:has(table)')

这将为您提供一个包含<tr>元素的集合,其中包含一个<table>.

于 2011-06-29T12:54:51.427 回答