2012-05-16 21 views
6

tengo marcadoobtener el índice de jQuery elemento "td"

<table> 
    <tr id="1"> 
     <td colspan="4"> 
      <p class="que"> 
       1. Who are you?</p> 
     </td> 
    </tr> 
    <tr class="ans"> 
     <td> 
      <input type="checkbox" />Student 
     </td> 
     <td> 
      <input type="checkbox" checked="true" />Developer 
     </td> 
     <td> 
      <input type="checkbox" />Other 
     </td> 
     <td> 
      <input type="text" /> 
     </td> 
    </tr> 

</table>​​​ 

Aquí quiero obtener el índice de la td particular que tiene su casilla marcada. Por ejemplo, aquí debería ser 1. Pero obtengo 0 cada vez que parece el índice de la fila. Aquí está el código jquery que he usado.

var answers = $('table tr.ans'); 
$.each(answers, function() { 
    var answer = $(this).find("input[type='checkbox']:checked").index(); 
    alert(answer);     
    });​ 

y aquí está la fiddle ¿Cómo puedo obtener el índice de la TD en particular? Gracias

Respuesta

13

Puede hacerlo con

$("table tr.ans input[type='checkbox']:checked").parent().index(); 

Usted sólo tendrá que desplazarse desde la casilla de nuevo hasta la <td>, a la que stright llamando .index punto hace el truco:

Si hay el argumento se pasa al método .index(), el valor de retorno es un entero que indica la posición del primer elemento dentro del objeto jQuery relativo a sus elementos hermanos.

See it in action.

Puesto que usted está haciendo esto dentro de un bucle, un ajuste más adecuado sería

var answer = $(this).find("input[type='checkbox']:checked").parent().index(); 
+0

No puede combinar los selectores. Esto solo funcionaría si hubiera una sección de respuestas. –

+0

@Jack: actualicé la respuesta, gracias por su aporte. – Jon

2

Cambie la línea a esto:

var answer = $(this).find("input[type='checkbox']:checked").parent().index(); 

esto le dará el índice de la td que es el padre de la entrada que ha seleccionado en su selector de jquery.

Cuestiones relacionadas