2011-10-08 75 views
2

假设我有一个带父节点和一组子节点的部分dom树。如何在现有的父母和孩子之间插入DIV *?

如何插入它们之间的DIV?

我开始与

parent --+--> child[0] 
     |--> child[1] 
     |--> child[2] 

..和我想

parent ---> newdiv ---+--> child[0] 
         |--> child[1] 
         |--> child[2] 

我怎么能这样结束?

我需要replaceChild()的交谈。有没有像replaceParent()

我想我可以克隆所有的子节点,然后将它们作为子节点插入到新节点中。但是......是否保留了所有的元素ID?


编辑 - 我没有使用jQuery或任何框架标记这一点,但也许我应该已经明确了。这不是一个jQuery问题。我想在javascript + DHTML中执行此操作。没有额外的或外部的框架。

+0

我想克隆所有子节点将是您最好的选择......望着jQuery的源'wrapAll'(我认为确实差不多就是你”重新寻找),似乎是做了什么(虽然我没有彻底分析):http://james.padolsey.com/jquery/#v=1.6.2&fn=jQuery.fn.wrapAll如果你可以使用jQuery,我建议! –

+1

正确,'wrapAll()'做的诀窍:http://jsfiddle.net/2U7rm/1/ –

回答

3

您可以通过将元素附加到新的父元素来移动元素。在普通的JavaScript:

var newDiv = document.createElement("div"); 

while(parent.hasChildNodes()) 
    newDiv.appendChild(parent.firstChild); 

parent.appendChild(newDiv); 

documentation of W3CappendChild

添加节点newChild到此节点的子列表的末尾。如果newChild已经在树中,它首先被删除。

+0

只是为了澄清 - 将一个元素附加到一个新的父级,删除它与现有父级的关系。是对的吗? – Cheeso

+0

@Cheeso - 是的,请参阅https://developer.mozilla.org/En/DOM/Node.appendChild上的说明。它在每个浏览器都以这种方式工作。 –

+0

太棒了!谢谢。 – Cheeso

相关问题