2011-06-24 19 views
11

Duplicar posibles:
Table row and column number in jQueryjavascript: conseguir índice td

Si tengo una tabla de este modo:

<table> 
    <thead> 
    <tr><th>1</th> <th>2</th> <th>3</th></tr> 
    </thead> 

    <tbody> 
    <tr><td>data</td> <td>checkbox</td> <td>data</td></tr> 
    </tbody> 
</table> 

Cuando el usuario hace clic en la casilla de verificación, quiero para obtener los índices de fila y columna. Puedo obtener el índice de la fila utilizando este código:

var row = $(this).parent().parent(); 
var rowIndex = $(row[0].rowIndex); 

pero no puedo averiguar el índice de la columna ...

He intentado esto, pero no funcionó:

var colIndex = $(row.children().index(this).parent()); 

Analicé los resultados de preguntas similares aquí y parece que tengo que repetir todos los tds con cada uno o mapa, ¿hay algo más simple que pueda usar? Gracias.

+0

Bueno, un problema es que debe anidar etiquetas dentro de las etiquetas . No creo que sea legal ponerlos directamente en una etiqueta . – JohnFx

+0

Se me olvidó agregarlos en el ejemplo de la pregunta ... es viernes. : D lo edité. – PruitIgoe

+0

¿Puedo preguntar qué estás haciendo con los índices de fila/columna? Podríamos tener una idea para una alternativa donde no la necesite. – JohnFx

Respuesta

25

Obtener el índice del <td> en primer lugar, ya que está en el camino a la <tr>:

var cell = $(this).closest('td'); 
var cellIndex = cell[0].cellIndex 

var row = cell.closest('tr'); 
var rowIndex = row[0].rowIndex; 

o utilizando el método parents()[docs] junto con una multiple-selector[docs], se puede hacer la selección para los dos a la vez:

var cellAndRow = $(this).parents('td,tr'); 

var cellIndex = cellAndRow[0].cellIndex 
var rowIndex = cellAndRow[1].rowIndex; 
+1

Gracias, eso es más elegante que lo que estoy haciendo . – PruitIgoe

+1

@Pruitlgoe: De nada. – user113716

+0

Eso está bien. Gracias por este útil consejo. –

Cuestiones relacionadas