2009-10-27 75 views
5

我試圖找出最後一個列表項的索引號,但是我使用的jquery一直返回-1。這是JS和我正在使用的HTML。使用Jquery獲取列表項目的索引

var index = $('#imageThumbnails li:last').index(this); 

<div id="imageThumbnails"> 
    <ul class="gallery_demo_unstyled"> 
     <li class="active"><img src="test-img.jpg" width="394" height="394" alt=" " /></li> 
     <li><img src="test-img2.jpg" width="394" height="394" alt=" " /></li> 
     <li><img src="test-img3.jpg" width="394" height="394" alt=" " /></li> 
     <li><img src="test-img4.jpg" width="394" height="394" alt=" " /></li> 
     <li><img src="test-img5.jpg" width="394" height="394" alt=" " /></li> 
     <li><img src="test-img6.jpg" width="394" height="394" alt=" " /></li> 
     <li><img src="test-img7.jpg" width="394" height="394" alt=" " /></li> 
    </ul> 
</div> 

感謝您的幫助。

回答

21

您需要在集合上調用索引,並傳入該集合的子項。

var items = $('#imageThumbnails li'); 
var lastItem = $('#imageThumbnails li:last'); 
var index = items.index(lastItem); 

如果你在點擊功能的處理器,你可以做這樣的事情:

var items = $('#imageThumbnails li').click(function() { 
    var index = items.index(this); 

    // now that I know where I am, why am I here? 
}); 
+0

感謝您的幫助! – 2009-10-27 19:56:14

+1

第二個如何工作? – TStamper 2009-10-27 19:58:13

+0

'items'變量包含在內部函數的閉包中,並在click函數執行時可用。從那時起,將來將會完成整個表達式,並且'items'將被設置爲由該表達式產生的值的數組。 – joshperry 2009-10-27 20:04:20