Jquery 如何附加DOMnode?

Jquery 如何附加DOMnode?,jquery,Jquery,此附加过程工作正常: document.getElementById('x').appendChild(document.importNode(node,true)) 但是当我尝试jQuery风格时,$('#x').append($(node))或$('#x').append(node)不起作用 编辑:很抱歉,我在复杂的上下文中使用DOMnodes,当使用一个简单的简短示例时,它使用的是$('#x')。append(node)。。。请参阅我的Wiki答案。因为您正在使用document.im

此附加过程工作正常:

document.getElementById('x').appendChild(document.importNode(node,true))
但是当我尝试jQuery风格时,
$('#x').append($(node))
$('#x').append(node)
不起作用



编辑:很抱歉,我在复杂的上下文中使用DOMnodes,当使用一个简单的简短示例时,它使用的是
$('#x')。append(node)
。。。请参阅我的Wiki答案。

因为您正在使用document.importNode从另一个文档导入节点。在jquery中,必须使用
.contents()

假设法线节点和段落节点:

<div id="x"><p>...</p></div>

<p id="p1">Standard paragraph1</p>
<p id="p2">.. paragraph2, lost?</p>

<template id="t">
  <p>Templated node0!</p>
  <p>Other...</p>
</template>
结论 将
std_节点
表示为“标准DOMnode”(如示例第1段),并将
tpl_节点
表示为
标记:

  • $('#x')。追加(标准节点)
    :“副作用”删除节点
    它不是“追加”而是“移动节点”

  • $('#x')。追加(tpl_节点)
    :工作正常

  • $('#x')。追加($(节点))
    :删除节点的“副作用”相同

  • $('#x')。追加($(tpl_节点))
    :工作正常

  • $('#x').append($(node.clone())
    :工作正常


应该是
$(“#x”)
哦,对不起,编辑过了!谢谢@Rahul,你能在JSfiddle上演示一下吗<代码>内容()对我不起作用。。。请参见中的示例
$('#x').append($(node).contents().html());
<div id="x"><p>...</p></div>

<p id="p1">Standard paragraph1</p>
<p id="p2">.. paragraph2, lost?</p>

<template id="t">
  <p>Templated node0!</p>
  <p>Other...</p>
</template>