2014-02-05 57 views
1

如何cloneNode,然後再轉換該節點名稱,因爲我想要的屬性複製和孩子深深的(https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode?redirectlocale=en-US&redirectslug=DOM%2FNode.cloneNodeJavaScript的cloneNode深,但變化父節點類型/節點名稱

所以像:我有一大堆屬性的跨度和兒童。我希望同樣的事情,但我想它一個div

多感謝

後,我設法克隆和改變的div我想用它來代替跨度。還有克隆所有事件監聽器的方法嗎?

+0

不,您不能克隆事件偵聽器。 nodeName是不可變的,因此您需要創建一個新元素並複製所有子節點以「更改」nodeName。但是你需要什麼?是不是''夠了? – Bergi

+0

嗨Bergi謝謝你的答覆。在GitHub上,你自己的要點沒有叉按鈕。所以我加入了一個,我這樣做的方式是克隆「星」按鈕,然後更改爲具有叉href。 我用jquery完成了這個克隆,但我想用原生函數做。請參閱第46行的要點(https://gist.github.com/Noitidart/8794639),其中我使用jquery完成了這個克隆。我把它從一個跨度變成了「A」,因爲它在計數爲0時是一個跨度,但跨度不會很好。 – Noitidart

回答

1

以下不處理原始span元素下的直接的文本子元素,否則應該正常工作。

mutantClone = document.createElement("div"); 
    for (var i=0; i<original.childNodes.length; i++){ 
     var child = original.childNodes[i]; 
     var childClone = child.cloneNode(true); 
     mutantClone.appendChild(childClone); 
    } 
+0

謝謝mathhead! – Noitidart