2009-10-27 26 views
5

Próbuję znaleźć numer indeksu ostatniego elementu listy, ale jquery, którego używam, zwraca wartość -1. To jest JS i HTML, którego używam.Uzyskiwanie indeksu elementu listy za pomocą 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> 

Dzięki za pomoc.

Odpowiedz

21

Musisz wywołać indeks w kolekcji, podając w podpunkcie tej kolekcji.

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

Jeśli jesteś w funkcji obsługi kliknięcia można zrobić coś takiego:

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

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

dzięki za pomoc! –

+1

jak działałby ten drugi? – TStamper

+0

Zmienna 'items' jest zawarta w zamknięciu funkcji wewnętrznej i będzie dostępna w momencie wykonania funkcji kliknięcia. Od tego czasu będzie w przyszłości całe wyrażenie zostanie zakończone, a 'items' zostanie ustawione na tablicę wartości, które wynikają z wyrażenia. – joshperry

Powiązane problemy