使用jQuery获取子的N索引,具有特定的类

时间:2017-03-22 19:24:54

标签: javascript jquery

在click事件中,我想获取所选元素的索引。但是我不只是想得到N索引,其中N表示它是父元素的第N个子元素。

相反,我想要N索引,其中N表示它是包含指定类的父元素的第N个子节点。在此示例中,指定的索引是“type-2”,因此最后一个子节点应该具有N = 2,因为它是具有该类的父元素的第3个子节点。

<div class="parent-element">
   <div class="child type-1"></div>
   <div class="child type-1"></div>
   <div class="child type-2"></div>
   <div class="child type-2"></div> 
   <div class="child type-2"></div> <!-- index should equal 2 -->
</div>

将以这种方式选择......

$(‘.child’).click(function(){
    $(this). …
}

2 个答案:

答案 0 :(得分:3)

可以在集合上调用.index()方法,它将返回集合中元素的索引。所以你可以使用:

var index = $(this).parent().children(".type-2").index(this);

答案 1 :(得分:1)

使用@Barmar解决方案:

$(".child").on( 'click', function() {
  var lastClass = $(this).attr('class').split(' ').pop();
  var index = $(this).parent().children("." + lastClass).index(this);
  $("#index-clicked").html(index);
});
.child{
display: inline-block;
  width: 100px;
  height: 100px;
}

.type-1{
  background-color: gray;
}

.type-2{
  background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="parent-element">
   <div class="child type-1"></div>
   <div class="child type-1"></div>
   <div class="child type-2"></div>
   <div class="child type-2"></div> 
   <div class="child type-2"></div>
</div>

Index clicked : <span id="index-clicked"></span>