2010-04-01 14 views
7

Tengo una tabla que tiene nombres de clientes junto con los productos que compraron con sus precios. Entonces hay múltiples registros para cada cliente. Esta tabla es simple tabla de 3 columnas: nombre, producto y precio.¿Cómo agregar filas en el medio de una tabla con jQuery?

Lo que quiero hacer es:

poner todos los registros que pertenecen a un cliente en conjunto (lo he hecho) y justo después de estas filas añadir una nueva fila adicional que acaba mostraría precio total de todos los productos cada cliente ha comprado. Esta fila tendría una celda vacía en el nombre y la columna del producto. Y tendría total en la columna de precios.

EDITAR

Es sólo una simple tabla simple, sin ninguna clase o las identificaciones. la tabla agrupada sabia del cliente es generada por php. Así que tengo una tabla como ésta

<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> 

Y quiero convertir esto en:

<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

¿Cómo está demarcando las filas para cada cliente? ¿Una clase? IDs? Si tiene algo identificable, debería ser fácil obtener esa fila y modificar el DOM después de ella. – justkt

+0

¿Puedes proporcionar algún código HTML? Para que podamos ver qué nombres de clase le das a los elementos, etc. –

Respuesta

8

Usando jQuery puede seleccionar todas las filas donde el nombre de usuario se encuentra dentro de uno de sus elementos descendientes. Supongo que los nombres de usuario son únicos.

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

Ahora, obtener el último

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

y utilizar la función after para insertar su nueva fila.

+0

bien, veo el punto. Puedo agregar clases basadas en nombres y usar tu truco. Pero creo que de alguna manera primero tengo que obtener una lista de todos los nombres. – understack

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

o

newrow.insertAfter('#rowid'); 

donde #rowid es un identificador de una fila que quiero agregar una nueva línea

+0

utilicé esta respuesta. muy útil :) por cierto, ¿hay alguna manera de animar el inserto? : D – Obay

Cuestiones relacionadas