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