使用jQuery查找child的索引?

时间:2012-05-05 10:07:51

标签: javascript jquery html

如果我有一个html结构,如:

<div id="parent">
 <div class="child first">
   <div class="sub-child"></div>
 </div>

 <div class="child second">
   <div class="sub-child"></div>
 </div>

 <div class="child third">
   <div class="sub-child"></div>
 </div>
</div>

我有一个通过($('#parent.child')).click()定义的点击处理程序,然后我点击了second类(仅添加了first, second, third类以使演示更清晰)的div获得数字1的简单方法,因为它是第二个孩子? (基于0指数)?

$(this).index

这样的东西

2 个答案:

答案 0 :(得分:15)

看看jQuery API。您建议的方法index完全正确:

$('#parent .child').click(function() {
    var index = $(this).index();
});

来自文档:

  

如果没有将参数传递给.index()方法,则返回值为   一个整数,表示第一个元素在其中的位置   jQuery对象相对于它的兄弟元素。

另请注意,我已从示例中略微更改了选择器。我猜这只是你问题中的一个错字。 #parent.child将查找ID为“parent”的元素和一个“child”类,但您实际上需要#parent .child(注意空格)来查找具有类“child”的元素,这些元素是ID为“parent”的元素。

答案 1 :(得分:2)

index()方法可用于获取集合中元素的位置。在基本情况下,$(this).index()应该有效。

但是通过更具体的收藏,您可以使用collection.index(item)获得排名。想象一下,在衡量#parentindex()span,任何事情)时,不应计算一些简单的img内容。使用简单的方法,您的代码可能会破坏,但使​​用特定的方法,它不会。

这样的事情对你有用:

var $children = $('#parent .child').click(function​ () {
    console.log($children.index(this));
});​

jsFiddle Demo