我还不是一个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
子句来确定该行是否包含在我的选择器中?
答案 0 :(得分:3)
好吧,我想我只想出来了。我试了很长时间才想出来,直到我发布一个问题后才知道......你知道那是怎么回事。
在任何一种情况下,.filter()
都是我的朋友。
var personRows = $(this).nextUntil('tr.team').filter('tr.person');