2010-08-30 15 views
24

Ho la seguente struttura della tabella.Come aggiungere nuovo <tr> dopo l'attuale <tr>

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

Quando clicco su <a> voglio aggiungere nuovi <tr> accanto <tr> di cui <a> viene cliccato.

Così il risultato sarà:

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

risposta

44

Esempio:

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

Se si desidera creare un uso clone: ​​

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

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

Esempio link: http://www.jsfiddle.net/7A6MQ/

Fondamentalmente , si crea una copia da tr element (che include i nodi figlio) e si inserisce tale copia dopo quell'elemento. Pertanto, è necessario il binding .live per assicurarsi che gli elementi a appena creati invochino anche quel gestore di clic.

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

+0

jAndy - Non è necessario '.live()' per il secondo esempio. Basta fare ".clone (true)" e clona tutti i dati associati. http://www.jsfiddle.net/7A6MQ/1/ – user113716

5

Inoltre, è possibile scrivere:

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

Non così tanta differenza ma sembra più leggibile.

1

Ecco il codice. Per favore controlla e fammi sapere se c'è qualche problema.

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

function RemoveRaw (obj) { \t //alert(obj.parent(). parent(). html()); \t if (obj.closest ('tr') [0] .rowIndex == 0) { \t Avviso \t ("Impossibile rimuovere questo raw"); \t} else { \t obj.parent(). Parent(). Remove(); \t}} –

+0

$ (document) .ready (function() { \t $ ("# submit") clicca (function() { \t \t // alert ("Ciao");. \t \t var len . = $ ("# dataTable tr") di lunghezza; \t \t dati var = ""; \t \t for (var i = 0; i

+0

Problemi correlati