<table>
<tr class="codesgroupheader"><td>Header1</td></tr>
<tr><td>1</td></tr>
<tr class="codesgroupheader"><td>Header2</td></tr>
<tr><td>2</td></tr>
<tr class="codesgroupheader"><td>Header3</td></tr>
<tr><td>3</td></tr>
<tr class="codesgroupheader"><td>Header4</td></tr>
</table>
这是jQuery代码
$('.codesgroupheader').not(':last').each(function() {
alert($(this).nextUntil('.codesgroupheader').find('tr').size());
});
但它总是让我归零......
答案 0 :(得分:4)
您的代码执行以下操作:
$(this) // <tr> <-- = this
.nextUntil('.codesgroupheader')// All elements between this and <tr class="...">
.find('tr') // Seeks for a <tr> inside <tr> - Not found
如果要选择给定类的<tr>
元素数,请使用:
alert($('tr.codesgroupheader').not(':last').length);
如果您想获得当前和下一个<tr>
之间<tr class=...>
的数量,请使用:
// this = any <tr>
$(this).nextUntil(".codesgroupheader", "tr").length;
有关nextUntil
功能的其他参考和用法,请参阅jQuery documentation。
答案 1 :(得分:2)
this
指的是当前的tr
元素。
nextUntil('.codesgroupheader')
会找到this
与下一个tr.codesgroupheader
之间的所有元素。
您的.find
尝试在该集内搜索(因此在tr
内)。您可以完全跳过find
,或者如果由于某种原因您认为其中可能有其他元素,请使用filter
代替({em>或第二个参数nextUntil
),过滤当前集。
所以要么使用
$('.codesgroupheader').not(':last').each(function() {
alert($(this).nextUntil('.codesgroupheader').size());
});
或过滤
$('.codesgroupheader').not(':last').each(function() {
alert($(this).nextUntil('.codesgroupheader').filter('tr').size());
});
或(使用nextUntil
的第二个参数)
$('.codesgroupheader').not(':last').each(function() {
alert($(this).nextUntil('.codesgroupheader', 'tr').size());
});