Para llevar a cabo este ejemplo vamos a crear una tabla para administrar una lista de productos que tendrán un nombre, una descripción y precio del mismo. Podremos agregar los que queramos o eliminar uno en particular.
En primer lugar vamos a agregar el código html:
<!DOCTPYE html>
<html>
<head>
<meta charset="UTF-8">
<title> Administrar tabla con Jquery </title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1> Lista de prodoctos </h1>
<form action="" method="post">
<table id="lista_productos" class="table table-striped">
<thead>
<tr>
<th> Nombre </th>
<th> Descripción </th>
<th> Precio </th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="text" name="nombre[]" class="nombre" placeholder="Nombre" />
</td>
<td>
<textarea name="descripcion[]" class="descripcion" placeholder="Descripción" width="100%"></textarea>
</td>
<td>
<input type="number" name="precio[]" class="precio" placeholder="Precio" />
</td>
<td>
<button type="button" class="btn btn-danger button_eliminar_producto"> Eliminar </button>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3"> </td>
<td>
<button type="button" class="btn btn-success button_agregar_producto"> Agregar </button>
</td>
</tr>
</tfoot>
</table>
</form>
</div>
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="js/productos.js"></script>
<script type="text/javascript">
$(document).ready(function(){
productos();
});
</script>
</body>
</html>
Haciendo una explicación rápida, primero agregamos el css de Twitter Bootstrap:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
También agregamos la librería de Jquery, en ese caso en particular la 3.2.1:
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
Y un archivo .js para manipular el comportamiento de la tabla:
<script type="text/javascript" src="js/productos.js"></script>
Ahora sólo nos falta agregar el código de ese archivo ‘productos.js’:
function productos(){
var tbody = $('#lista_productos tbody');
var fila_contenido = tbody.find('tr').first().html();
//Agregar fila nueva.
$('#lista_productos .button_agregar_producto').click(function(){
var fila_nueva = $('<tr></tr>');
fila_nueva.append(fila_contenido);
tbody.append(fila_nueva);
});
//Eliminar fila.
$('#lista_productos').on('click', '.button_eliminar_producto', function(){
$(this).parents('tr').eq(0).remove();
});
}
Para entender un poco el código:
Primero recuperamos el elemento tbody dentro de su padre el cual tiene el id ‘lista_productos’:
var tbody = $(‘#lista_productos tbody’);
Luego el contenido la primer y única fila inicial, para hacer copias al momento de crear más:
var fila_contenido = tbody.find('tr').first().html();
Con el contenido de la fila, ya podemos crear nuevas filas:
$('#lista_productos .button_agregar_producto').click(function(){
var fila_nueva = $('<tr></tr>');
fila_nueva.append(fila_contenido);
tbody.append(fila_nueva);
});
O eliminar una actual:
$('#lista_productos').on('click', '.button_eliminar_producto', function(){
$(this).parents('tr').eq(0).remove();
});

