<table>
<tr id="parent_1">
<td>Parent 1</td>
</tr>
<tr class="child">
<td>Child 1</td>
</tr>
<tr class="child">
<td>Child 2</td>
</tr>
...
<tr id="parent_2">
<td>Parent2</td>
</tr>
...
</table>
如何使用jQuery找到parent_1和parent_2之间的子行数?
编辑:对不起,没有说清楚这只是一个例子,该表可以包含任意数量的父行和任意数量的子行
答案 0 :(得分:16)
这样可以得到你想要的东西
var childCount = ($('#parent_2').get(0).rowIndex - $('#parent_1').get(0).rowIndex) - 1;
答案 1 :(得分:11)
此:
$('#parent_1 ~ .child:not(#parent_2 ~ *)').size()
翻译:匹配类child
的所有元素,它们是之后的,#parent_1
,而不是那些兄弟之类的#parent_2
{ {1}}。
答案 2 :(得分:2)
想到的第一个想法。我确信有一些精心设计的方法来选择有问题的元素,(这意味着你只需要做$(选择器).length)但是我不能想到一个我的头脑。
var doCount = false;
var numberOfChildren = 0;
$('tr').each(function(i){
if($(this).is("#parent_2"))
doCount = false;
if(count)
numberOfChildren++;
if($(this).is("#parent_1"))
doCount = true;
});
答案 3 :(得分:2)
我认为最好的方法可能是手动计算。它会更快,因为当你知道你已经完成计数时你可以中断(如果你的桌子很大,那就很有用)。
var rowid1 = 'parent_1';
var rowid2 = 'parent_2';
var rows = $("#"+rowid1).parent().find('tr');
var count = 0;
for (var i = 0; i < rows.size(); i++) {
var el = rows.get(i);
// Done counting
if (el.id == rowid2) break;
if (el.id != rowid1) {
++count;
}
}
alert("There are " + count + " rows between");
答案 4 :(得分:2)
有些人在这里有一些不错的答案,我已经开始我的生病了,只是添加它以获取额外的信息。
$(document).ready(function() {
n = 0;
var x = new Array(0,0,0);
$("table tr").each(function(i)
{
if($(this).hasClass("child"))
{
x[n] += 1;
}
else
{
n += 1;
}
});
for(var y = 0; y < x.length; y++)
{
alert(x[y]);
}
});
编辑btw我不关心有多少父母在那里,只要阵列足够大就会继续计算。
答案 5 :(得分:0)
假设parent_1和parent_2分别是开始行和结束行:
$("#parent_1").siblings().size() - 1