2009-10-31 17 views
13

Ho una tabella di dati di cui ho bisogno per aggiungere dinamicamente una colonna a. Diciamo che ho questa tabella di base per iniziare con:Inserimento di una colonna di tabella con jQuery

<table> 
<tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr> 
<tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr> 
<tr><td>cell 1</td><td>cell 2</td><td>cell 3</td></tr> 
</table> 

vorrei inserire una colonna tra la cella 1 e la cella 2 in ogni riga ... Ho provato questo, ma semplicemente non sta funzionando come mi aspetto ...

$(document).ready(function(){ 
$('table').find('tr').each(function(){ 
    $(this).prepend('<td>cell 1a</td>'); 
}) 
}) 

risposta

27

Prova questa:

$(document).ready(function(){ 
    $('table').find('tr').each(function(){ 
     $(this).find('td').eq(0).after('<td>cell 1a</td>'); 
    }); 
}); 

il codice originale sarebbe aggiungere la colonna alla fine di ogni riga, non in tra le colonne. Questo trova la prima colonna e aggiunge la cella accanto alla prima colonna.

+0

Bello grazie, ha funzionato perfettamente! ... * schiaffeggia la testa * Avrei dovuto cercare la cella e posizionarla dopo. Ho davvero bisogno di un po 'di caffeina LOL – Mottie

+0

Ho finito per usare 'td: eq (0)' perché ci saranno volte in cui ho bisogno di inserire una colonna nel mezzo di una tabella con più di 3 colonne, quindi tutto quello di cui ho bisogno fare è cambiare la variabile ... grazie ancora per l'aiuto! – Mottie

+0

Questa è un'idea molto migliore. Ho cambiato la mia risposta per includerla. –

2
$('table > tr > td:first-child').after('<td>cell 1a</td>'); 

tr > td seleziona il primo livello td dopo un tr e after inserisce i dati all'esterno dell'elemento.

+0

Ho provato a provare questo e non ha funzionato, ma grazie comunque – Mottie

+2

Questo non funziona perché la maggior parte, se non tutti, i browser avvolgono tutte le righe attorno a un tag '', quindi il selettore dovrebbe essere "tabella" > tbody> tr> td: first-child' ". Ovviamente potrebbe essere una query piuttosto lenta da eseguire poiché jQuery dovrebbe fare un sacco di filtri per ottenere tutte le celle in una grande tabella ... –

0
$('td:first-child').after('&lt;td&gt;new cell&lt;/td&gt;'); 
Problemi correlati