关于jQuery的append方法不能多次添加同一个DOM元素的解决方法

时间:2022-04-17 23:14:41

 资料来自:https://segmentfault.com/q/1010000007677851?_ea=1419689

  append()方法在jQuery中是使用appendChild()实现的,实现原理如下代码:

   append: function() {
return this.domManip( arguments, function( elem ) {
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
var target = manipulationTarget( this, elem );
target.appendChild( elem );
}
});
}

  框架中是通过appendChild来操作dom的,appendChild的作用是什么呢?请看w3c解答,它里面也提到可以将元素从一个元素移动到另一个元素,说白了,就是剪切的意思。因此你后面写的不是不起作用,而是在原地移动,因为就一个对象,你再怎么写也是一个。

  解决方法:

  1、将这个DOM元素写进append()中:

  像这样:

$("xxx").append( " <p class='xxx'>·····</p> " );

  2、使用克隆方法:

$("xxx").append($("td").clone());

  clone()方法甚至可以复制事件处理程序

  关于jQuery的clone()方法详情见:http://www.runoob.com/jquery/html-clone.html