2009-10-31 28 views
13

Mam tabelę danych, które muszę dynamicznie dodać kolumnę do. Powiedzmy mam ten podstawowy tabeli na początek:Wstawianie kolumny tabeli z 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> 

chciałbym wstawić kolumnę pomiędzy komórką 1 i 2 komórki w każdym rzędzie ... Próbowałem tego, ale to po prostu nie działa jak oczekuję ...

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

Odpowiedz

27

Spróbuj tego:

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

Twój oryginalny kod będzie dodać kolumnę na końcu każdego wiersza, a nie między kolumnami. Znajduje pierwszą kolumnę i dodaje komórkę obok pierwszej kolumny.

+0

Bardzo dziękuję, działało to doskonale! ... * klepie głowę * Powinienem był szukać komórki i położyć ją. Naprawdę potrzebuję trochę kofeiny LOL – Mottie

+0

Tak naprawdę skończyłem używając 'td: eq (0)' ponieważ będą chwile, kiedy będę musiał wstawić kolumnę do środka stołu z więcej niż 3 kolumnami, wtedy wszystko czego potrzebuję do to zmiana zmiennej ... jeszcze raz dziękuję za pomoc! – Mottie

+0

To o wiele lepszy pomysł. Zmieniłem swoją odpowiedź, aby to uwzględnić. –

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

tr > td wybiera pierwszego poziomu td po tr i after wstawia dane na zewnątrz elementu.

+0

Próbowałem przetestować to i nie zadziałało, ale dziękuję i tak – Mottie

+2

To nie działa, ponieważ większość, jeśli nie wszystkie, przeglądarki zawijają wszystkie wiersze wokół znacznika '', więc selektor musiałby być "' table > tbody> tr> td: first-child' ". Oczywiście może to być nieco powolne zapytanie, ponieważ jQuery musiałoby dużo filtrować, aby uzyskać wszystkie komórki w dużej tabeli ... –

0
$('td:first-child').after('&lt;td&gt;new cell&lt;/td&gt;'); 
Powiązane problemy