2011-10-11 15 views
6

Mam strukturę DOM, który wygląda tak:Pierwsze indeks bieżącego elementu we wszystkich dopasowanych elementów w DOM

<div class="chapter"> 
    <section></section> 
    <section></section> 
</div> 
<div class="chapter"> 
    <section></section> 
    <section></section> 
    <section class="current"></section> 
    <section></section> 
</div> 
<div class="chapter"> 
    <section></section> 
    <section></section> 
    <section></section> 
    <section></section> 
</div> 

chcę uzyskać numer indeksu sekcji z klasą „Current "we wszystkich sekcjach. W tym przykładzie indeks tego wynosiłby 5, ponieważ jest to znacznik piątej sekcji i zawiera klasę prądu.

Jak uzyskać to za pomocą jQuery?

zacząłem z tym, aby uzyskać listę wszystkich sekcji w DOM:

var sections = $('section'); 

Próbowałem rzeczy jak to, aby spróbować uzyskać wynik chcę:

alert($(sections+'.current').index()); 

To zwraca błąd js.

Czego mi tu brakuje? Dzięki!

Odpowiedz

11

W kodzie $('section') wrócą ci wszystkie działy jako obiekt jQuery. Wśród nich, aby uzyskać indeks sekcji, która ma klasę current można to zrobić:

sections.index($(".current")); 

byłby to powrót względny indeks sekcji z bieżącej klasy, który byłby 4 jako $('sections') wróci ty, obiekt JQuery Array (0 zindeksowane), który zawiera wszystkie elementy sekcji. Tak więc element, który pasuje jest piątym elementem i indeksem, zwróci 4. Mam nadzieję, że ten fiddle pomaga.

+0

Wygląda na to, że powinien działać, przetestowałem go tutaj http://jsfiddle.net/uae2U/ i robi, ale niestety w moim kodzie powraca -1. To mnie jednak przybliża, dzięki! – Cory

+0

Jeśli powróci -1, to prawdopodobnie istnieje jakiś błąd w selektorach. index() zwróci -1, jeśli nie będzie pasować. –

0

zmiana jak ten

var sections = 'section'; 

kodzie to robi i jej źle

alert($($('section')+'.current').index()); 
+0

Dzięki, ale nie rozumiem, jak to pomaga. ustawienie sekcji var = 'section'; nie robi nic więcej, jak tylko tworzy ciąg tekstowy. – Cory

+0

jeśli powinieneś używać takich sekcji var = $ ('section'); następnie użyj tylko tego alertu (sections.hasClass ("current"). Index()); –

6
$('.current').index('section'); 

Zobacz docs na index.

Jeśli łańcuch selektora zostanie przekazany jako argument, funkcja .index() zwraca liczbę całkowitą wskazującą pozycję oryginalnego elementu względem elementów zgodnych z selektorem. Jeśli element nie zostanie znaleziony, funkcja .index() zwróci -1.

+0

ten też działa. dzięki! – Cory

Powiązane problemy