2009-01-22 24 views
16

Estoy tratando de encontrar el índice de una fila en una tabla. Intento usar el siguiente código, pero parece que tengo un índice de -1.Cómo encontrar el índice de una fila en una tabla usando jquery

$(document).ready(function() 
{ 
    $("tr").click(function(){ 
     var index = $("table").index($(this)); 
     $("span").text("That was row index #" + index); 
    }); 
}); 

Con html que se parece a esto;

<table> 
<tbody> 
    <tr><td>click</td></tr> 
    <tr><td>click</td></tr> 
    <tr><td>click</td></tr> 
    <tr><td>click</td></tr> 
</tbody> 

Gracias

+0

var index = $ (this) .index(); –

Respuesta

31

Ha intentado:

$("tr").index(this) 

La documentación muestra de paso esto y que la selección precedente debe ser donde se encuentra el nodo. Si necesita encontrar en una tabla específica (y hay múltiples), puede ser necesario proporcionar algún contexto:

// haven't tested this 
$("tr", $(this).closest("table")).index(this) 
+0

Gracias, eso es muy útil. – ilivewithian

+1

Desde un niño dentro de la fila, $ (this) .closest ("tr"). Index() hace el truco. La segunda opción en esta respuesta no funciona. –

10

Probar:

var index = $("table tr").index(this); 

La documentación para index() dice:

Búsquedas cada elemento emparejado para el objeto y devuelve el índice del elemento , si se encuentra, comenzando con cero. Si se pasa un objeto jQuery, solo se verifica el primer elemento .

es necesario llamar a la index() en una colección de <tr> elementos, no el padre <table>.

+0

Tiene perfecto sentido. Obteniendo -1 en todo sin embargo. – Winnemucca

+0

@stevek He editado la respuesta para eliminar el '$()' alrededor de 'this', ya que no estoy seguro de si jQuery devolverá la misma instancia de objeto en llamadas a '$' con la misma instancia de nodo. –

2

Basado en respuesta roba para encontrar el índice en la tabla específica, esto funcionó para mí.

var index = $('tr', $(this).closest("table")).index(this); 
Cuestiones relacionadas