2009-10-27 76 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