2010-02-06 80 views
0

让我们假设你有一个表,下面的jQuery代码关于Jquery的附加功能

var rows = $('#ttable').find('tbody > tr').get(); 
$('#ttable tbody').append(rows[1]); 

右行对象获取所有的“TR”。第二行,将行[1]附加到表体,所以你应该把它放在表的最后。

它工作正常,但原始行消失。为什么?这意味着,行不重复,它只是移动。 为什么?以及如何解决?

回答

0

jQuery的附加功能使用Node.appendChild()引擎盖下等的行为同样

从MDC

将节点添加到指定父节点的子项列表的末尾。如果节点已经存在,则将其从当前父节点中删除,然后添加到新的父节点。

所以像cobbal说,你要克隆该行并追加克隆

1

也许是因为rows [1]指的是已经插入到表中并注册在DOM中的对象。尝试克隆该对象并添加为一个新的。

或者你可以尝试水木清华这样的:

$('#ttable tr:first').before('<tr>...</tr>') 
3

,如果你第一次克隆它,它会做你想要什么:

var rows = $('#ttable').find('tbody > tr'); 
$('#ttable tbody').append(rows.eq(1).clone()); 
+0

注意,行不再是一个元素的数组,但由于该代码jQuery的不使用get()!这就是eq()和clone()方法可用的原因。 – 2010-02-06 09:56:39