在行类“a”之后获取类“b”行的集合,直到下一个非“b”行?

时间:2011-03-02 20:52:14

标签: jquery html dom jquery-selectors html-table

我还不是一个jQuery选择器忍者,所以我问这个希望有人可以捅它。

我正在使用jQuery模板创建一个包含基于嵌套字典的行的表(它们嵌套了5层左右)。它基于有关组织结构的数据以及每个组中的人员。根据下面的部分代码,我打算做的是 - 对于每个“团队”行 - 获得属于该团队的“人”行。这就是我所拥有的,为了易于阅读而缩进。

<tr class="division">...</tr>
    <tr class="team">...</tr>
        <tr class="person">...</tr>
        <tr class="person">...</tr>
    <tr class="team">...</tr>
        <tr class="person">...</tr>
        <tr class="person">...</tr>
        <tr class="person">...</tr>
<tr class="division">...</tr>
    <tr class="team">...</tr>

我现在拥有的是一个获取所有class="team"行的jQuery选择器,然后对于每一行,我正在尝试找到选择器来获取每个后续​​的{{1}行,直到下一个非class="person"行。我做不到。 是否需要取代person方法

.nextAll()

我暂时登录到控制台,因此上面的HTML的控制台输出应该匹配... ...

$('table tr.team').each(function () {
    var personRows = $(this).nextUntil('tr.team');
    console.log('row count: ' + personRows.length);
});

不幸的是,由于 > row count: 2 > row count: 3 - 类行,我得到了更多的内容。

"division"

我一直在绞尽脑汁试图通过API来获得我想要的东西,但我无法达到预期的效果。有任何想法吗?优雅的解决方案?我是否必须在某处放入一个 > row count: 2 > row count: 4 子句来确定该行是否包含在我的选择器中?

1 个答案:

答案 0 :(得分:3)

好吧,我想我只想出来了。我试了很长时间才想出来,直到我发布一个问题后才知道......你知道那是怎么回事。

在任何一种情况下,.filter()都是我的朋友。

 var personRows = $(this).nextUntil('tr.team').filter('tr.person');