2010-08-30 52 views
24

我有以下表结构。如何追加新的<tr>当前<tr>

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

当我点击<a>我要添加新的<tr>旁边<tr>其中被点击<a>

那么结果将是:

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

回答

44

例子:

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

如果你想创建一个克隆使用:

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

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

实例链接:http://www.jsfiddle.net/7A6MQ/

基本上,您从tr element(其中包括子节点)创建一个副本,并在该元素之后插入该副本。因此,您需要绑定.live以确保新创建的a元素也可以调用该点击处理程序。

参考:.clone().insertAfter().live()

+0

jAndy - 你不需要'.live()'作为你的第二个例子。只要执行'.clone(true)',它也克隆所有相关的数据。 http://www.jsfiddle.net/7A6MQ/1/ – user113716 2010-08-30 12:31:33

5

此外,你可以写:

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

没有如此大的差别,但看起来更具可读性。

1

这是代码。请检查并告诉我是否有任何问题。

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

函数RemoveRaw(obj){ \t //alert (obj.parent()。parent()。html());如果(obj.closest('tr')[0] .rowIndex == 0){ \t \t alert(“Can not remove this raw”); (); parent()。remove(); \t}} $ – 2015-12-09 18:46:24

+0

(文件)。就绪(函数(){ \t $( “#提交”)点击(函数(){ \t \t //警报( “你好”); \t \t VAR LEN = $( “#的dataTable TR”)长度; \t \t VAR数据= “”; \t \t为(VAR I = 0; I 2015-12-09 18:49:26

+0

​​ ​​ 2015-12-09 18:50:46

相关问题