2010-09-18 52 views
0

不知道爲什麼會發生這種情況。但每次我做(elem).index();時,它總是會返回-1。這是爲什麼?使用jQuery的正確方法index(); ?它總是返回-1

如何找到對象的索引?

+2

這意味着元素沒有找到。請發佈示例HTML和JavaScript。 – 2010-09-18 04:35:01

+0

看看[**這個例子的用法**](http://jsfiddle.net/N3MfU/) – 2010-09-18 06:02:34

回答

2

jQuery.index() documentation,其中大量的實例:如果沒有參數被傳遞給.index()方法

返回值

,返回值是指示所述第一位置的整數jQuery對象中相對於其同級元素的元素。

如果在元素集合上調用.index()並傳入了DOM元素或jQuery對象,.index()返回一個整數,指示傳遞的元素相對於原​​始集合的位置。

如果選擇器字符串作爲參數傳遞,.index()返回一個整數,指示原始元素相對於選擇器匹配的元素的位置。 如果找不到元素,.index()將返回-1。

注意最後一句。顯然elem是根本找不到。驗證您的選擇器和/或元素。


更新按照該意見,你可能在錯誤的時刻調用它。這是一個SSCCE,copy'n'paste'n'run它。

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>SO question 3740385</title> 
     <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
     <script> 
      alert('Before DOM ready: ' + $(".nav ul li:first").index()); // Can return -1. 

      $(document).ready(function() { 
       alert('After DOM ready: ' + $(".nav ul li:first").index()); // Must return 0. 
      }); 
     </script> 
    </head> 
    <body> 
     <div class="nav"> 
      <ul> 
       <li>item</li> 
       <li>item</li> 
       <li>item</li> 
      </ul> 
     </div> 
    </body> 
</html> 

參見:

+0

但它可以在firebug中選擇它,所以我的選擇器工作,但它仍然給我-1。這裏有一個例子,'$(「。nav ul li:first」)。index();'返回-1,但是$(「。nav ul li:first」)是一個工作選擇器。 – Trip 2010-09-18 05:02:28

+1

這裏給出0。 [演示](http://jsfiddle.net/ujcaf/)。也許你在錯誤的時刻調用它(在DOM加載之前)。把它放在'$(document).ready()'中。 – BalusC 2010-09-18 05:08:24

+0

也許它是我正在使用的js的舊版本,或者它在螢火蟲中不起作用。我使用這個而不是'$(「。nav ul li:first」)。prevAll()。length;' – Trip 2010-09-18 05:15:06