2012-01-02 12 views

Odpowiedz

13

Jeśli czytam tego prawa, to myślę, że wszystko, co musisz zrobić to:

var DomTreeCopy = $('parentElementSelector').clone(true,true); 

A następnie ponownie załączyć DomTreeCopy (zamiast oryginalny):

$('parentElementSelector').replaceWith(DomTreeCopy); 

lub dodać go do DOM oprócz oryginału:

$(DomTreeCopy).insertAfter($('parentElementSelector')); 

Odniesienia:

+0

Dzięki. Udostępnianie upvote, nie oznaczanie jako idealnej odpowiedzi, skoro klonowanie nie będzie obsługiwać stylów CSS/programów obsługi zdarzeń? Mam rację, proszę? – BreakPhreak

+1

Czy przeczytałeś materiał referencyjny dla 'clone()'? Pierwsze "prawdziwe, prawdziwe" argumenty przekazane do metody oznaczają, że kopiuje dane i zdarzenia związane z elementami.Pierwsze "prawda" odnosi się do sklonowanego elementu, a drugie "prawda" do dzieci sklonowanego elementu. Dopóki twój arkusz stylów obsługuje selektory dopasowane przez sklonowane elementy, to tak, CSS zastosuje się/zostanie zastosowany automatycznie. –

+0

Dzięki za wskazanie mi niektórych brakujących szczegółów. – BreakPhreak

1

można użyć $.data() ... metoda

$.data(document.body, "sortElement", "0"); //set value 
    $.data(document.body, "sortElement");  //read value 

było można przechowywać wszystkie waht chcesz w rodzaju słowniku - a następnie używać go później.

http://api.jquery.com/jQuery.data/

+0

Ohh .. To jest bardziej poprawne i poprawne! –

0

Możesz przechowywać sklonowany obiekt gdzie indziej w DOM. Zmodyfikuj DOM, który jest widoczny. Gdy potrzebujesz rzeczywistej wartości, możesz śledzić ją z miejsca, do którego dołączyłeś.

<div id="oldInfo"></div> 

$("#youActualDom").clone().appendTo("#oldInfo").hide(); 

Następnie zapisuje oryginalne DOM z $("#oldInfo")

8

pomocą prostych javascript:

var elem = document.getElementById('theElement'), 
    backupElem = elem.cloneNode(true); 
// Your tinkering with the original 
elem.parentNode.replaceChild(backupElem, elem); 

Working demo

MDN - cloneNode

MDN - replaceChild

Należy pamiętać, że za pomocą tej metody funkcje obsługi zdarzeń są przywracane: , a nie. Ale możesz też je utworzyć, ponieważ są zwykłymi funkcjami.

Okazało się, myliłem się co do tego. Obsługa zdarzeń jest zachowywana, ponieważ jest to oryginalny DOM, który przywracasz. Jeśli kopiowałeś go i dołączałeś w innym miejscu, programy obsługi zdarzeń nie byłyby kopiowane. This demo pokazuje, że procedura obsługi zdarzeń pozostaje.

+0

Czy możesz bardziej szczegółowo opisać obsługę zdarzeń? – BreakPhreak

+1

@BreakPhreak Wygląda na to, że się myliłem. Zobacz moją odpowiedź. –

Powiązane problemy