使用jQuery计算两个特定行之间的表行数

 ...  ... 
Parent 1
Child 1
Child 2
Parent2

如何使用jQuery找到parent_1和parent_2之间的子行数?

编辑:对不起,没有说清楚这只是一个例子,该表可以包含任意数量的父行和任意数量的子行

这将为您提供您想要的

 var childCount = ($('#parent_2').get(0).rowIndex - $('#parent_1').get(0).rowIndex) - 1; 

这个:

 $('#parent_1 ~ .child:not(#parent_2 ~ *)').size() 

翻译:匹配类child所有元素,它们是#parent_1的兄弟姐妹,而不是#parent_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; }); 

我认为最好的方法可能是手动计算。 它会更快,因为当你知道你已经完成计数时你可以中断(如果你的桌子很大,那就很有用)。

 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"); 

有些人在这里有一些很好的答案,我已经开始我的生病了,只是添加它以获取额外的信息。

 $(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我不关心有多少父母在那里,只要arrays足够大,它就会继续计算。

假设parent_1和parent_2分别是开始行和结束行:

 $("#parent_1").siblings().size() - 1