如果我有一个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
答案 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)
获得排名。想象一下,在衡量#parent
(index()
,span
,任何事情)时,不应计算一些简单的img
内容。使用简单的方法,您的代码可能会破坏,但使用特定的方法,它不会。
这样的事情对你有用:
var $children = $('#parent .child').click(function () {
console.log($children.index(this));
});