2009-06-08 11 views
11

Korzystając z jQuery, chciałbym móc uzyskać indeks li, gdzie HREF zawarty w znaczniku zakotwiczenia jest równy "#All". (W tym przypadku prawidłowy wynik byłby 3)Pobierz indeks elementu w ramach UL

<div id="tabs"> 
    <ul> 
     <li><a href="#CPU"><span>CPU</span></a></li> 
     <li><a href="#Pickup"><span>Pickup</span></a></li> 
     <li><a href="#Breakfix"><span>Breakfix</span></a></li> 
     <li><a href="#All"><span>All</span></a></li> 
    </ul> 
</div> 

Próbowałem:

$("#tabs ul").index($("li a[href='#All']")) 

... bez powodzenia. Co ja robię źle?

Odpowiedz

27

To powinno wystarczyć:

var index = $("#tabs ul li").index($("li:has(a[href='#All'])")); 
  • Byłaś wybierając wszystkie <ul> zamiast wszystkich <li> ów chciałeś dostać indeks z.
  • Trzeba sprawdzić, czy element <li>: ma związek z co chcesz za pomocą wybieraka :has, inaczej dopasowane elementem będzie <a> sama zamiast <li>.

Tested the above i daje mi poprawną odpowiedź, 3, ponieważ indeks ma wartość 0.

+0

Pokonaj mnie minutę +1 –

+0

Co jeśli chcesz znaleźć indeks elementu, który ma określony tekst? –

1

Myślę, że to dlatego, że twoja pierwsza zasada pasuje do wszystkich elementów UL, kiedy chcesz dopasować wszystkie elementy LI. Spróbuj:

$("#tabs ul li").index($("li a[href='#All']")) 
+0

To nie działa. Zwraca "-1". –

+0

Tak, nie zdawałem sobie sprawy z tego: czy Paolo wskazał na – robertc

1

Chcesz uzyskać indeks elementu wewnątrz innego kontekstu, jako część zestawu elementów. Zobacz index() w dokumentacji interfejsu API, aby uzyskać więcej informacji, w szczególności przykłady.

<script type="text/javascript"> 
$(document).ready(function(){ 

    var which_index = $("#tabs ul li a").index($("a[href='#All']")); 
    alert(which_index); 
}); 
</script> 

<body> 
<div id="tabs"> 
    <ul> 
     <li><a href="#CPU"><span>CPU</span></a></li> 
     <li><a href="#Pickup"><span>Pickup</span></a></li> 
     <li><a href="#Breakfix"><span>Breakfix</span></a></li> 
     <li><a href="#All"><span>All</span></a></li> 
    </ul> 
</div> 
</body> 
Powiązane problemy