Jquery中index()問題


對於Jquery中的index()問題,很多人會說這個很簡單的,並不是一個非常困難的方法。筆者開始的時候也是這樣子認為的,但是今天遇到一個index的問題,讓我忙了一個晚上都沒有解決,最后還是使用console.log()一個個地測,最后才發現問題所在。

首先,讓我們看下index的用法(資料來源:http://www.php100.com/manual/jquery/)

搜索匹配的元素,並返回相應元素的索引值,從0開始計數。

   (1)如果不給 .index() 方法傳遞參數,那么返回值就是這個jQuery對象集合中第一個元素相對於其同輩元素的位置。
        (2)如果參數是一組DOM元素或者jQuery對象,那么返回值就是傳遞的元素相對於原先集合的位置。
        (3)如果參數是一個選擇器,那么返回值就是原先元素相對於選擇器匹配元素中的位置。如果找不到匹配的元素,則返回-1。

對於(2)(3),相信大家看了相關的文檔之后都能了解,下面重點講一下(1)

首先考慮一個問題,假設當我們要選擇同一個元素p,在jquery中有兩種方式:$('p') 和$('xx.xx xx p'),哪一種更好?
這兩種方式有什么區別呢?
這得從index的定義說起,當方法index()不傳入參數時,其得出的結果是 這個元素在同輩中的索引位置。這是什么意思呢?看下列代碼
<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')中后者的方法。這樣子就不會出現上述的情況了。或者可以傳入參數,也可以避免出現這種情況。其實,這個問題也是筆者在寫代碼的時候沒有遵循詳細的原則,導致出現這種錯誤,不過,學習到這個用法,以后就要注意了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM