在jquery或javascript中对特定类之前的元素进行计数

在jquery或javascript中对特定类之前的元素进行计数,javascript,jquery,Javascript,Jquery,在类“p16”之前,我必须计算所有名为“loader”的类 在这种情况下,正确的答案是:4 <div class="loader p12"></div> <div class="loader p13"></div> <div class="loader p14"></div> <div class="loader p15"></div> <div class="loader p16"&g

在类“p16”之前,我必须计算所有名为“loader”的类

在这种情况下,正确的答案是:4

<div class="loader p12"></div>

<div class="loader p13"></div>

<div class="loader p14"></div>

<div class="loader p15"></div>

<div class="loader p16"></div>

<div class="loader p17"></div>

<div class="loader p18"></div>
这是一把小提琴:

多谢各位

您可以使用

console.log($('.p16').prevAll('.loader').length)

您可以遍历文档中具有
加载程序类的所有元素,然后在到达
p16
时停止

var total = 0
$('.loader').each(function(){
  if($(this).hasClass("p16")){
    return false;
  }
  total++;
});
您使用的
index()
不正确

传入元素或jquery对象以索引集合中的特定元素

console.log($('.loader').index($('.p16'))


非常感谢。效果很好。我会接受这个答案,因为你是第一个。注意:这确实假设所有
加载程序
元素都是同级元素。假设它们不是同级元素,那么你需要使用charlietfl提供的索引方法,但是如果你只想要以前的同级元素,我将使用此主题作为索引方式,可以拾取其他非同级的加载程序,除非您有一个更具体的选择器或可能的副本,我也发现了此其他主题,但此主题具有父类,而我的主题具有相同的元素。这将计算所有加载程序,而不仅仅是当前加载之前的加载程序。
var total = 0
$('.loader').each(function(){
  if($(this).hasClass("p16")){
    return false;
  }
  total++;
});