为什么jQuery的"追加()"的孩子首先删除它?

Mis*_*hko 3 jquery append

请考虑以下HTML:

<div>
    <p>Hello</p>
    World
</div>
Run Code Online (Sandbox Code Playgroud)

为什么$("div").append($("p"));首先将其<p>从原来的位置移除?

注意:我不想创建第二个副本<p>.我只是想了解为什么jQuery <p>在添加它之前会删除它.

ick*_*fay 9

jQuery只是DOM的抽象,这就是DOM appendChild方法的作用.

将节点添加newChild到此节点的子级列表的末尾.如果newChild已经在树中,则首先将其删除.

在某种程度上,它是有道理的; 节点有父,子和其他一些东西.如果节点可能位于多个不同的位置,则必须具有多个父节点等.这会给API增加许多不必要的复杂性.