2010-04-01 3 views
7

Ich habe eine Tabelle, die Kundennamen zusammen mit den Produkten hat, die sie mit ihren Preisen gekauft haben. Daher gibt es für jeden Kunden mehrere Datensätze. Diese Tabelle ist eine einfache 3 Spalte Tabelle: Name, Produkt und Preis.Wie fügt man Zeilen in der Mitte einer Tabelle mit jQuery hinzu?

Was ich tun möchte, ist:

Legen Sie alle Datensätze zu einem Kunden gehören, zusammen (ich habe es getan), und nur, nachdem diese Zeilen eine neue zusätzliche Zeile hinzufügen, die nur Gesamtpreis aller Produkte zeigen würde, jeder Kunde hat gekauft. Diese Zeile hätte eine leere Zelle in der Namen- und Produktspalte. Und hätte insgesamt in Preis Spalte.

EDIT

Es ist nur eine einfache einfache Tabelle ohne Klasse oder IDs. Kunden weise gruppiert Tabelle wird von PHP generiert. Also ich habe eine Tabelle wie diese

<table> 
    <tr> 
     <td> name1 </td> 
     <td> product1 </td> 
     <td> 100 </td> 
    </tr> 
    <tr> 
     <td> name1 </td> 
     <td> product2 </td> 
     <td> 200 </td> 
    </tr> 
    <tr> 
     <td> name2 </td> 
     <td> product3 </td> 
     <td> 50 </td> 
    </tr> 
    <tr> 
     <td> name2 </td> 
     <td> product1 </td> 
     <td> 100 </td> 
    </tr> 
</table> 

Und ich möchte dies konvertieren:

<table> 
    <tr> 
     <td> name1 </td> 
     <td> product1 </td> 
     <td> 100 </td> 
    </tr> 
    <tr> 
     <td> name1 </td> 
     <td> product2 </td> 
     <td> 200 </td> 
    </tr> 
    <!-- New row --> 
    <tr> 
     <td> </td> 
     <td> </td> 
     <td> 300 </td> 
    </tr> 
    <tr> 
     <td> name2 </td> 
     <td> product3 </td> 
     <td> 50 </td> 
    </tr> 
    <tr> 
     <td> name2 </td> 
     <td> product1 </td> 
     <td> 100 </td> 
    </tr> 
    <!-- New row --> 
    <tr> 
     <td> </td> 
     <td> </td> 
     <td> 150 </td> 
    </tr> 
</table> 
+0

Wie grenzst du die Zeilen für jeden Kunden ab? Eine Klasse? IDs? Wenn Sie etwas Identifizierbares haben, sollte es einfach sein, diese Zeile zu bekommen und das DOM danach zu modifizieren. – justkt

+0

Können Sie HTML-Code bereitstellen? Damit wir sehen können, welche Klassennamen Sie den Elementen geben usw. –

Antwort

8

Mit jQuery können Sie alle Zeilen auswählen, in denen der Benutzername in einem seiner untergeordneten Elemente enthalten ist. Ich gehe davon aus, dass Benutzernamen einzigartig sind. Jetzt

$("tr:contains('" + username + "')") 

, erhalten die letzte

$("tr:contains('" + username + "')").last() 

Und verwenden Sie die after Funktion Ihre neue Zeile einzufügen.

+0

ok, ich sehe den Punkt. Ich kann Klassen basierend auf Namen hinzufügen und deinen Trick verwenden. Aber ich denke irgendwie muss ich zuerst eine Liste aller Namen bekommen. – understack

15
var prize = 1 * 1; 
    var newrow = $('<tr><td></td><td></td><td>' + prize + '</td></tr>'); 
    $('#rowid').after(newrow); 

oder

newrow.insertAfter('#rowid'); 

wo #rowid eine ID von einer Reihe ist, dass Sie möchte eine neue Zeile anhängen.

+0

Ich habe diese Antwort verwendet. sehr hilfreich :) Übrigens, gibt es eine Möglichkeit, den Einsatz zu animieren? : D – Obay

Verwandte Themen