在行类“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”行?的主要内容,如果未能解决你的问题,请参考以下文章