为什么JQuery index()为第一个元素返回1?

cri*_*eep 0 jquery

在下面的代码行中,对set中第一个元素的index()函数的调用返回1.为什么它不返回0?

var firstBlockIndex = $( '.block' ).first().index();
Run Code Online (Sandbox Code Playgroud)

Dra*_*kes 5

考虑下面的HTML块:

<div>
    <span></span>
    <span class="block"></span>
    <span class="block"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

然后

$('.block').first().index();
Run Code Online (Sandbox Code Playgroud)

返回1是因为

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

<div>块内有4个<span>标签.在first()与类"块"一个是第二标签.因此它的索引是1,因为index()从零开始(ref).

演示:JSFiddle


要获取元素相对于所有匹配元素的位置,可以传入选择器或元素index()以获取集合中某些缩小选择器的索引.考虑这个HTML块:

<div>
    <span></span>
    <span class="block"></span>
    <span class="block"></span>
    <span class="block special"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

然后

$('.block').index( $(".special") ));
Run Code Online (Sandbox Code Playgroud)

将返回2,因为具有"特殊"类的跨度是"块"类的元素组中的第3个元素.

演示:JSFiddle