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

Posted

技术标签:

【中文标题】在行类“a”之后获取类“b”行的集合,直到下一个非“b”行?【英文标题】:Get collection of class "b" rows after row class "a" until next non-"b" row? 【发布时间】:2011-07-07 14:16:27 【问题描述】:

我还不是一个 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>

我现在拥有的是一个 jQuery 选择器,它获取所有 class="team" 行,然后对于每一行,我试图找到 选择器 以获取每个后续​​ class="person" 行,直到下一个非person 行。我做错了。 需要用什么东西代替.nextAll() 方法

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

我暂时登录到控制台,所以上面 html 的控制台输出应该匹配...

    > row count: 2
    > row count: 3

不幸的是,由于"division"-class 行,我得到了更多类似的东西。

    > row count: 2
    > row count: 4

我一直在绞尽脑汁试图通过 API 来获得我想要的东西,但我无法获得想要的效果。有任何想法吗?任何优雅的解决方案?我是否必须在某处添加if 子句以确定该行是否是我想要包含在我的选择器中的行?

【问题讨论】:

【参考方案1】:

好吧,我想我刚刚想通了。我尝试了很长时间才弄明白,直到我发布了一个问题......你知道这是怎么回事。

无论哪种情况,.filter() 都是我的朋友。

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

【讨论】:

另外需要注意的是:当我指定元素的类型(在本例中为表格行)时,我只能得到想要的效果。

以上是关于在行类“a”之后获取类“b”行的集合,直到下一个非“b”行?的主要内容,如果未能解决你的问题,请参考以下文章

java List集合如何使用两个实体类中的参数方法?

Python编程中,按回车实现换行的疑惑。

UML 类图:与集合元素的关系

Java面试题——中级(下)

pandas:如何在行匹配查询后获取每n行的组?

使用类在行上导入文件