jquery:需要使用selector作为方法的帮助

时间:2011-06-29 12:49:10

标签: jquery methods css-selectors tablerow

我正在尝试从包含子表的表中选择<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

Here is the link

2 个答案:

答案 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>元素集。