为何必须得clone才能把对象append到dom中而直接append只能出现一个dom节点,如下
var obj = "<p>对象</p>"; var $obj = $(obj); $(obj).appendTo($(".xx")); $(obj).appendTo($(".xx"));
学习是最好的投资!
因为 $obj 指向的是同一个dom对象 第二次appendTo 是拿第一次添加到dom树里的 $obj移动到新的父节点下 表现的效果是不做任何操作 如果是appendTo其他父节点 则是移动节点
$obj
所以需要重新生成新的节点 或者 clone一份节点
问题在于 appendTo() 或者 append() 方法都是移动 DOM 对象,而不是将 DOM 对象复制到你指定的那个地方。
appendTo()
append()
比如下面这样的 HTML 结构:
<p id = "a"></p> <p id = "b"></p> <p></p>
执行这样的 jQuery 脚本:
var $a = $("#a"), $b = $("#b"), $p = $("p"); $p.appendTo($a);
HTML 结构就变成了:
<p id = "a"><p></p></p> <p id = "b"></p>
再执行这样的脚本:
$p.appendTo($b);
<p id = "a"></p> <p id = "b"><p></p></p>
也就是说,如果你想出现多个 <p></p> 标签,要么生成多个 <p></p> 元素,要么克隆多个。
<p></p>
直接用 append() 与 appendTo() 方法,如你所见,达不到你想要的效果。
(以上脚本都没试)
因为
$obj
指向的是同一个dom对象 第二次appendTo 是拿第一次添加到dom树里的$obj
移动到新的父节点下 表现的效果是不做任何操作 如果是appendTo其他父节点 则是移动节点所以需要重新生成新的节点 或者 clone一份节点
问题在于
appendTo()
或者append()
方法都是移动 DOM 对象,而不是将 DOM 对象复制到你指定的那个地方。比如下面这样的 HTML 结构:
执行这样的 jQuery 脚本:
HTML 结构就变成了:
再执行这样的脚本:
HTML 结构就变成了:
也就是说,如果你想出现多个
<p></p>
标签,要么生成多个<p></p>
元素,要么克隆多个。直接用
append()
与appendTo()
方法,如你所见,达不到你想要的效果。(以上脚本都没试)