對於Jquery中的index()問題,很多人會說這個很簡單的,並不是一個非常困難的方法。筆者開始的時候也是這樣子認為的,但是今天遇到一個index的問題,讓我忙了一個晚上都沒有解決,最后還是使用console.log()一個個地測,最后才發現問題所在。
首先,讓我們看下index的用法(資料來源:http://www.php100.com/manual/jquery/)
搜索匹配的元素,並返回相應元素的索引值,從0開始計數。
(1)如果不給 .index() 方法傳遞參數,那么返回值就是這個jQuery對象集合中第一個元素相對於其同輩元素的位置。
(2)如果參數是一組DOM元素或者jQuery對象,那么返回值就是傳遞的元素相對於原先集合的位置。
(3)如果參數是一個選擇器,那么返回值就是原先元素相對於選擇器匹配元素中的位置。如果找不到匹配的元素,則返回-1。
對於(2)(3),相信大家看了相關的文檔之后都能了解,下面重點講一下(1)
這個元素在同輩中的索引位置。這是什么意思呢?看下列代碼
<ul> <div id="foo">foo</div>//(僅僅是假設,不推薦使用這種方法) <li id="bar">bar</li> <li id="baz">baz</li> </ul>
執行$('#bar').index()。返回值是1,而不是0。這是為什么呢?這里因為不傳入參數,index()返回的是與('#bar')同輩的位置,而在上述例子當中div是與下面的li同輩的,所以返回值是1.如果你要避免這樣的情況出現,唯一的方法就是在搜索元素的時候,盡可能采用$('p') 和$('xx.xx xx p')中后者的方法。這樣子就不會出現上述的情況了。或者可以傳入參數,也可以避免出現這種情況。其實,這個問題也是筆者在寫代碼的時候沒有遵循詳細的原則,導致出現這種錯誤,不過,學習到這個用法,以后就要注意了。