2010-11-19 6 views
4

페이지의 DOM 트리가 활성 상태이고 항상 브라우저에 반영되기 때문에 실제 렌더링 된 트리에 영향을주지 않으면 서이 DOM 트리를 수정하여 어떤 용도로 가장 좋은 방법은 무엇입니까? 제 목적이 특정 자식 노드를 바꾸고 DOM 트리가 얼마나 유사한지를 확인한다고 가정 해 보겠습니다.자바 스크립트 DOM 트리 조작을위한 복제

중복 트리를 만드는 것이 유일한 해결책입니까? 그렇다면이 기능이 있습니까? 또는 트리의 중복 복사본을 만들기 위해 자체 함수를 작성해야합니다. 나는 요소 객체의 모든 속성을 필요로하지 않을 것이므로 형제와 자식을 가리키는 몇 가지 속성을 가진 더 단순한 객체를 만들 수 있습니다.

답변

5

document.cloneNode(true) 또는 다른 노드에서 같은 방법을 사용할 수 있습니다. cloneNode은 모든 노드를 복제하고 true은 재귀 적이어야 함을 의미합니다. 분명히 이것은 대형 페이지에서 상당한 성능 비용을 초래할 수 있습니다.

+0

그러나 새 노드의 childNodes 속성은 여전히 ​​원래 노드의 자식을 가리 킵니다. 또는 전체 하위 트리가 복제됩니까? – euphoria83

+0

이 맞습니다. 감사. – euphoria83

0

많은 멋진 자바 스크립트 라이브러리를 고려해 볼 수 있습니다. jQuery. 이것들을 사용하면 문서의 일부 또는 전체 DOM을 쉽게 복사하고 DOM에 저장 한 appart를 가질 수 있습니다.

자신 만의 솔루션을 사용해야하는 경우 Resig의 게시물 부분은 http://ejohn.org/blog/dom-documentfragments/입니다.

행운을 빈다. 당신이 jQuery를 사용하고자하는 경우

1

는 :

var clone = $("selectorForSomeElement(s)").clone(); 

clone 이제 요소 구조의 복사본입니다.

그런 다음 복제본을 사용하여 원하는대로 실험을 수행 할 수 있습니다.