为什么不能在两个dom元素中追加同一个孩子?

时间:2015-06-05 12:54:13

标签: javascript

我只是注意到我无法做到

var d1 = document.createElement('div');
var d2 = document.createElement('div');
var p = document.createElement('p');

d1.appendChild(p); // d1 has p now
d2.appendChild(p); // d2 has p now
// but where is p in d1 ?

有人会说它的逻辑,但是,当我第一次注意到我认为它是多么冷酷时。

为什么不可能?

2 个答案:

答案 0 :(得分:8)

DOM结构。

附加元素时,更改其父元素。

浏览器中的节点不仅仅是P中的文本(事实上该字符串可以共享)。它还具有位置,维度,可见性,接收可能在子元素中触发的事件,将事件传播到其父元素,等等。这里的一切都取决于树中的位置。就像许多CSS选择器一样。想象它在两个地方是相同的元素并没有多大意义,最好将它看作两个节点,可能有一些相同的内容。

如果您希望在两个地方拥有相同的内容,则可以to clone it

答案 1 :(得分:0)

jQuery's appendTo() method插入“匹配元素集中的每个元素到目标末尾”。试试这个:

p.appendTo(".div-class1, .div-class2")