2010-04-09 16 views
21

¿cómo puedo obtener el número de orden de algún elemento mediante javascript/jquery?Cómo obtener el número de orden de elemento

<ul> 
<li>Anton</li> 
<li class="abc">Victor</li> 
<li class="abc">Simon</li> 
<li>Adam</li> 
<li>Peter</li> 
<li class="abc">Tom</li> 
</ul> 

There is 3xli with abc class. Ahora necesito obtener el número de orden (secuencia) de Simon li.

Gracias de antemano

Respuesta

7

Puede hacerlo de esta manera mediante un selector con .index(), así:

Sin el selector, que había obtener 2, el índice de <li> en el conjunto general, independientemente de la clase. You can view a quick demo here. Tenga en cuenta que es un índice basado en 0, puede necesitar + 1, el resultado para mostrarlo en algunos casos, depende de lo que lo necesite.

1

Solo una solución para la respuesta de @Nick Craver. Intenté usar .index('.class_name') y seguí devolviendo -1 por no encontrado. Lo que hice entonces fue .index($('.class_name')) que me dio el resultado esperado. Supongo que requiere un objeto dom node para su valor y no solo un selector.

1

Para aquellos de ustedes que prefieren You Might Not Need Jquery enfoque, aquí es el método:

versión
function index(el) { 
    if (!el) return -1; 
    var i = 0; 
    do { 
     if (el.nodeType === 1) i++; 
     el = el.previousSibling; 
    } while (el) 
    return i; 
} 

IE9 +:

function index(el) { 
    if (!el) return -1; 
    var i = 0; 
    do { 
     i++; 
    } while (el = el.previousElementSibling); 
    return i; 
} 
Cuestiones relacionadas