最近在使用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元素內的序列號,就需要傳入相應的參考點了。