2011-10-21 14 views
7

mam trochę kodu:Zdobądź indeks jquery elementu - w tym tylko niektórych typów elementu

<h2 id="a">Header</h2> 
<table> 
    <tr> 
    <td>test</td> 
    </tr> 
</table> 

<h2 id="zzz">Header</h2> 
<table> 
    <tr> 
    <td>test</td> 
    </tr> 
</table> 

<h2 id="123">Header</h2> 
<table> 
    <tr> 
    <td>test</td> 
    </tr> 
</table> 

Chcę być w stanie określić, z jQuery, indeks danego h2, z wyłączeniem wszystkich innych elementy, więc tylko w odniesieniu do elementów h2. Na przykład, jeśli dostanę indeks elementu o id = "123", zwróci on 3, ponieważ jest to trzeci h2 w drzewie.

Próbowałem to:

$('#123').index('h2'); 

Ale to nie wydają się działać. Wciąż liczy pozostałe elementy na tym samym poziomie struktury DOM w liczeniu.

+1

pamiętać, że "123" nie jest prawidłową wartością dla atrybutu id. – jbabey

Odpowiedz

17

Musisz określić zbiór elementów, a następnie użyć index(<element>), aby uzyskać indeks danego elementu. Uwaga: Argumentem musi być obiekt jQuery lub DOM. Ciągi nie działają.
Należy zauważyć, że indeksy JavaScript są oparte na zera, więc indeks 2 w rzeczywistości oznacza trzeci element .

$("#123").parent().children('h2').index($('#123')) 

Fiddle: http://jsfiddle.net/2dg2q/

+1

to jest geniusz !!, potrzebujesz nagrody i myślę, że powinni stworzyć nowy sposób na zrobienie tego. – Fanckush

+1

Doskonała odpowiedź! –

+0

https://jsfiddle.net/6ksujand/ tylko mój przykład ilustrujący, jak dobra jest ta odpowiedź – Squirrl

Powiązane problemy