84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
为何必须得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()
方法,如你所见,达不到你想要的效果。(以上脚本都没试)