2009-10-31 13 views
13

Ich habe eine Tabelle von Daten, die ich dynamisch zu einer Spalte hinzufügen muss. Lets sagen, dass ich diese grundlegende Tabelle mit zu beginnen haben:Einfügen einer Tabellenspalte mit 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> 

würde ich eine Spalte zwischen Zelle 1 und Zelle 2 in jeder Zeile einfügen möchte ... Ich habe dies versucht, aber es funktioniert einfach nicht wie ich erwarte, dass ...

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

Antwort

27

Try this:

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

Ihr ursprünglicher Code würde die Säule am Ende jeder Zeile hinzufügen, nicht in zwischen den Spalten. Dies findet die erste Spalte und fügt die Zelle neben der ersten Spalte hinzu.

+0

Schönen Dank, das hat perfekt funktioniert! ... * schmatzt Kopf * Ich hätte nach der Zelle suchen und sie danach platzieren sollen. Ich brauche wirklich etwas Koffein LOL – Mottie

+0

Ich endete tatsächlich mit 'td: eq (0)' weil es Zeiten geben wird, wenn ich eine Spalte in die Mitte einer Tabelle mit mehr als 3 Spalten einfügen muss, dann alles was ich brauche Tu die Variable ändern ... danke nochmal für die Hilfe! – Mottie

+0

Das ist eine viel bessere Idee. Ich habe meine Antwort geändert, um das zu berücksichtigen. –

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

tr > td wählt die erste Ebene nach einer tdtr und after fügt Daten außerhalb des Elements.

+0

Ich habe versucht, dies zu testen, und es hat nicht funktioniert, aber trotzdem danke – Mottie

+2

Dies funktioniert nicht, weil die meisten, wenn nicht alle Browser alle Zeilen um ein '' Tag umschließen, so dass der Selektor" 'Tabelle sein müsste > tbody> tr> td: erstes Kind' ". Natürlich könnte das eine etwas langsame Abfrage sein, da jQuery viel filtern müsste, um alle Zellen in einer großen Tabelle zu erhalten ... –

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