2009-06-08 9 views
11

Usando jQuery, me gustaría poder obtener el índice del li donde el HREF de la etiqueta de ancla contenida es igual a "#Todo". (En este caso el resultado correcto sería 3)Obtener índice de elemento dentro de 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> 

que he intentado:

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

... sin suerte. ¿Qué estoy haciendo mal?

Respuesta

27

Esto debe hacerlo:

var index = $("#tabs ul li").index($("li:has(a[href='#All'])")); 
  • estuviera seleccionando todas <ul> en lugar de todos <li> s que quería obtener el índice de.
  • usted tiene que comprobar si el elemento <li>: tiene un vínculo con lo que quiere mediante el selector :has, de lo contrario el elemento emparejado será el <a> sí mismo en vez de la <li>.

Tested the above y me da la respuesta correcta, 3, ya que el índice está basado en 0.

+0

Batirme por un minuto +1 –

+0

¿Qué sucede si quiere encontrar el índice de un elemento que tiene el texto especificado? –

1

Creo que es porque su primera regla es hacer coincidir todos los elementos UL, cuando desea que coincida con todos los elementos LI. Proveedores:

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

Esto no funciona. Devuelve un "-1". –

+0

Sí, no me di cuenta del: tiene que Paolo señaló – robertc

1

Desea obtener el índice de un elemento dentro de otro contexto, como parte de un conjunto de elementos. Consulte index() en la documentación de la API para obtener más información, especialmente los ejemplos.

<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> 
Cuestiones relacionadas