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()
方法,如你所见,达不到你想要的效果。(以上脚本都没试)