淘先锋技术网

首页 1 2 3 4 5 6 7

最近在使用jQuery的时候遇到了一个诡异的问题,就是调用index()方法时返回的结果都是0。

// HTML代码
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
// jQuery代码
var lis = $('ul li');
console.log(lis.index()); // 0
console.log(lis.eq(1).index()); // 0
console.log(lis.eq(2).index()); // 0

这让我比较困惑,因为我传入的参数不是应该返回对应元素在集合中的序列号吗?

于是我上网搜索了解决方案,发现index()方法还有一个可选参数,可以传入一个选择器或者DOM元素作为参考点。

// HTML代码
<div class="container">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
// jQuery代码
var lis = $('ul li');
console.log(lis.index()); // 0
console.log(lis.eq(1).index()); // 0
console.log(lis.eq(2).index()); // 0
console.log(lis.index($('.container li'))); // 0 1 2

这里我将$('.container li')作为参考点,这样就能正确地返回每个元素在参考点中的序列号了。

总结一下,当你使用index()方法时,如果你想获取的是元素在整个文档中的序列号,就不用传入任何参数,但如果你想获取的是元素在某个选择器或者DOM元素内的序列号,就需要传入相应的参考点了。