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