2012-05-16 13 views
6

Ho markupottenere l'indice di 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>​​​ 

Qui voglio ottenere l'indice della particolare TD che ha la sua casella di controllo controllato. Per esempio qui dovrebbe essere 1. Ma sto ricevendo 0 ogni volta che sembra l'indice della riga. Ecco il codice jquery che ho usato.

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

e qui è il fiddle Come ottengo l'indice della particolare TD? Grazie

risposta

13

È possibile farlo con

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

Hai semplicemente bisogno di spostarsi dalla casella di controllo indietro fino alla <td>, in cui dritto chiamando .index punto fa il trucco:

Se no l'argomento viene passato al metodo .index(), il valore restituito è un numero intero che indica la posizione del primo elemento all'interno dell'oggetto jQuery relativo ai suoi elementi di pari livello.

See it in action.

Dal momento che si sta facendo questo all'interno di un ciclo, una misura più adeguata sarebbe

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

Non è possibile combinare i selettori. Questo funzionerebbe solo se ci fosse una sezione di risposta. –

+0

@Jack: aggiorna la risposta, grazie per il tuo contributo. – Jon

2

Modificare la riga a questo:

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

Questo vi darà l'indice del td che è il genitore dell'input che hai selezionato nel tuo jquery selector.

Problemi correlati