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

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

我现在拥有的是一个 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 子句来确定该行是否是我想包含在我的选择器中的行?

最佳答案

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

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

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

关于jquery - 在行类 "b"之后获取类 "a"行的集合,直到下一个非 -"b"行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173290/

相关文章:

jquery - 担心 data-* 属性的安全性?

javascript - Kendo UI 和 Angularjs : make grid inline editable

php - 如何从 DOMNode 获取innerHTML

javascript - 如何替换窗口/iframe的文档对象

javascript - react .js : Why is there no componentDidRender event?

javascript - 使用 jQuery 更改 data-src 值不起作用

jquery - 单击时添加值以形成数组

javascript - JQuery-在简短介绍后显示 home.html

javascript - 获取索引值时出现问题

javascript - HTML JavaScript querySelector 用于查找其子元素具有特定数据属性的元素