Vorrei modificare un sottoalbero DOM e ripristinarlo dopo un po '. Come posso salvare una copia sotto l'albero (per giocare con la sottostruttura attuale)? Come posso ripristinare la copia salvata in seguito?Come clonare (e ripristinare) una sottostruttura DOM
risposta
Se sto leggendo questo diritto, allora penso che tutto quello che avresti bisogno di fare è:
var DomTreeCopy = $('parentElementSelector').clone(true,true);
E poi ri-collegare il DomTreeCopy
(al posto di quella originale):
$('parentElementSelector').replaceWith(DomTreeCopy);
o per aggiungere al DOM in aggiunta a quello originale:
$(DomTreeCopy).insertAfter($('parentElementSelector'));
Riferimenti:
è possibile utilizzare $.data()
... metodo
$.data(document.body, "sortElement", "0"); //set value
$.data(document.body, "sortElement"); //read value
questo è stato è possibile archiviare tutto il livello qualitativo che si desidera in un tipo di dizionario - e poi riutilizzare in un secondo momento.
Ohh .. Questo è più valido e corretto! –
È possibile memorizzare l'oggetto clonato da qualche altra parte nel DOM. Modifica il DOM che è visibile. Quando richiedi il valore reale, puoi rintracciarlo dal luogo in cui ti sei aggiunto.
<div id="oldInfo"></div>
$("#youActualDom").clone().appendTo("#oldInfo").hide();
quindi, di monitorare il DOM originale con $("#oldInfo")
Utilizzando semplice JavaScript:
var elem = document.getElementById('theElement'),
backupElem = elem.cloneNode(true);
// Your tinkering with the original
elem.parentNode.replaceChild(backupElem, elem);
Nota che utilizzando questo metodo, i gestori di eventi sono
non ripristinati. Ma puoi anche aiutarli, dal momento che sono solo funzioni ordinarie.
Si scopre che mi sono sbagliato. I gestori di eventi vengono mantenuti poiché è il DOM originale che stai ripristinando. Se si stava copiando e aggiungendolo altrove, i gestori di eventi non verrebbero copiati. This demo indica che il gestore eventi rimane.
Puoi per favore approfondire l'argomento sui gestori di eventi? – BreakPhreak
@BreakPhreak Sembra che mi sbagliassi. Vedi la mia risposta. –
- 1. Come clonare una collezione backbone
- 2. Puoi clonare una chiusura?
- 3. Come spostare una sottostruttura ad un altro sottostruttura in emacs org-mode
- 4. Come ripristinare una sessione PHP?
- 5. Come esportare e ripristinare HSQLDB
- 6. come registrare tutte le modifiche del sottostruttura dom con gli strumenti di sviluppo di google/firebug
- 7. TortoiseGit come clonare una struttura di cartelle
- 8. Come clonare JQuery() e modificare l'id
- 9. Git rebase sottostruttura
- 10. Come annullare e ripristinare una linea smussata in iPhone?
- 11. Come clonare l'immagine?
- 12. Qual è la differenza tra git merge sottostruttura e git-sottostruttura
- 13. C++ sottostruttura bitfield Dimensioni
- 14. Strumenti per sviluppatori di Chrome. Punto di interruzione modifica sottostruttura DOM?
- 15. Osservatori di mutazione --- sottostruttura
- 16. Come clonare() StringBuilder
- 17. SQL e ripristinare
- 18. Mercuriale: come ripristinare una revisione particolare?
- 19. Come salvare e ripristinare un modulo?
- 20. come ripristinare una cartella eliminata localmente?
- 21. Come clonare Joda DateTime?
- 22. Come clonare ImageData?
- 23. Come clonare una matrice con una lunghezza maggiore di 32?
- 24. Come clonare un profilo WebSphere 8
- 25. MSBuildTasks e NuGet - Come posso ripristinare MSBuild.Community.Tasks.dll?
- 26. RabbitMQ: come creare e ripristinare il backup
- 27. Seleziona una ciliegia e schiaccia un intervallo di commit in una sottodirectory o sottostruttura
- 28. SQL-Query: EXISTS in Sottostruttura
- 29. ANTLR "Inaspettata fine della sottostruttura"
- 30. come ripristinare file cancellati
Grazie. Condividere un upvote, non contrassegnarlo come una risposta perfetta, dal momento che la clonazione non supporterà gli stili/gestori di eventi CSS? Ho ragione, per favore? – BreakPhreak
Hai letto il materiale di riferimento per 'clone()'? Il primo argomento 'true, true' passato al metodo significa che copia i dati e gli eventi associati agli elementi.Il primo 'true' si applica all'elemento clonato e il secondo' true' ai figli dell'elemento clonato. Finché il tuo foglio di stile supporta i selettori abbinati agli elementi clonati allora sì, i CSS si applicano/si applicano automaticamente. –
Grazie per avermi segnalato alcuni dettagli mancanti. – BreakPhreak