最近在使用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元素内的序列号,就需要传入相应的参考点了。