2010-08-30 9 views
24

Tengo la siguiente estructura de tabla.Cómo agregar nuevo <tr> después de actual <tr>

<table> 
    <tr> 
     <td><a href="#"></td> 
    </tr> 
</table> 

Cuando hago clic en <a> Quiero añadir nueva <tr><tr> junto a las cuales se hace clic <a>.

Así, el resultado será:

<table> 
    <tr> 
     <td><a href="#"></td> 
    </tr> 
    <tr> 
     <td><a href="#"></td> 
    </tr> 
</table> 

Respuesta

44

Ejemplo:

$('a').bind('click', function(){ 
    $('<tr><td>new td</td></tr>').insertAfter($(this).closest('tr')); 
}); 

Si desea crear un uso clon:

$('a').live('click', function(){ 
    var $this  = $(this), 
     $parentTR = $this.closest('tr'); 

    $parentTR.clone().insertAfter($parentTR); 
}); 

Ejemplo enlace: http://www.jsfiddle.net/7A6MQ/

Básicamente , crea una copia desde tr element (que incluye nodos secundarios) e inserta esa copia después de ese elemento. Por lo tanto, necesita el enlace .live para asegurarse de que los elementos recién creados a también invoquen ese controlador de clic.

Ref .: .clone(), .insertAfter(), .live()

+0

Jandy - No es necesario '.live()' para su segundo ejemplo. Simplemente haz '.clone (true)', y clonará todos los datos asociados también. http://www.jsfiddle.net/7A6MQ/1/ – user113716

5

Además, se puede escribir:

$('a').bind('click', function() { 
    $(this).closest('tr').after('<tr><td>new td<td></tr>'); 
}); 

No tanta diferencia, pero se ve más legible.

1

Aquí está el código. Por favor verifique y avíseme si hay algún problema.

function AddRaw(obj){ 
var $this  = obj; 
$parentTR = $this.closest('tr'); 
$parentTR.clone().insertAfter($parentTR); 
} 
+0

función RemoveRaw (obj) { \t //alert(obj.parent(). parent(). html()); \t if (obj.closest ('tr') [0] .rowIndex == 0) { \t \t alert ("No se puede eliminar este elemento en bruto"); \t} else { \t obj.parent(). Parent(). Remove(); \t}} –

+0

$ (document) ready (function() { \t $ ("#") presenten click (function() { \t \t // alert ("Hola"); . \t \t var len . = $ ("# tr dataTable") longitud; \t \t datos var = ""; \t \t for (var i = 0; i

+0

Cuestiones relacionadas