统计table tbody中tr数量出错,如何排除thead中的行?
解决方法:精准定位tbody下的tr元素
嘿,这个问题我太懂了!你之前统计结果包含thead行的核心原因,就是选择器没精准限定范围——如果直接写$('table tr'),会匹配到table下所有的tr(包括thead、tbody甚至tfoot里的),自然就多算了thead里的行。
要只统计tbody里的tr总数,只需要把选择器写得更精准就行,完全不需要用.each:
const totalValidTr = $('table tbody tr').length; console.log(totalValidTr); // 这下应该能得到正确的8了
为啥不用.each也能行?
jQuery的选择器本身就是批量匹配所有符合条件的元素,$('table tbody tr')会直接选中页面里所有table下tbody中的tr,调用.length就能直接拿到总数,根本不需要手动遍历累加。
如果想验证一下(比如排查个别table的tbody是否有问题),也可以用.each来逐个计数(虽然没必要,但可以用来确认):
let count = 0; $('table tbody tr').each(function() { count++; }); console.log(count); // 同样会输出正确的8
核心还是要确保选择器只包含你需要的元素,精准定位就解决问题啦~
内容的提问来源于stack exchange,提问作者Grizzly
相关产品推荐
相关产品推荐

