Me gustaría modificar un subárbol DOM y restaurarlo después de un tiempo. ¿Cómo puedo guardar una copia del subárbol a un lado (para jugar con el subárbol real)? ¿Cómo puedo restaurar la copia guardada después?Cómo clonar (y restaurar) un subárbol DOM
Respuesta
Si estoy leyendo esto, entonces creo que todo lo que tenía que hacer es:
var DomTreeCopy = $('parentElementSelector').clone(true,true);
Y a continuación, volver a colocar el DomTreeCopy
(en lugar del original):
$('parentElementSelector').replaceWith(DomTreeCopy);
o para añadirlo a la DOM, además de los originales:
$(DomTreeCopy).insertAfter($('parentElementSelector'));
Referencias:
puede utilizar $.data()
... método
$.data(document.body, "sortElement", "0"); //set value
$.data(document.body, "sortElement"); //read value
esto era usted puede almacenar todo waht que quieres en un tipo de diccionario - y luego volver a utilizarlo más adelante.
Ohh .. ¡Esto es más válido y correcto! –
Puede almacenar el objeto clonado en otro lugar del DOM. Modificar el DOM que está visible. Cuando requiera el valor real, puede rastrearlo desde el lugar donde lo ha agregado.
<div id="oldInfo"></div>
$("#youActualDom").clone().appendTo("#oldInfo").hide();
A continuación, realizar el seguimiento del dom original con $("#oldInfo")
Uso de JavaScript simple:
var elem = document.getElementById('theElement'),
backupElem = elem.cloneNode(true);
// Your tinkering with the original
elem.parentNode.replaceChild(backupElem, elem);
Tenga en cuenta que con este método, sus controladores de eventos son
no restaurados. Pero también puedes respaldarlos, ya que son solo funciones normales.
Resulta que estaba equivocado al respecto. Los controladores de eventos se conservan porque es el DOM original que está restaurando. Si estaba copiando y anexándolo a otro lugar, los controladores de eventos no se copiarían. This demo muestra que el controlador de eventos permanece.
¿Puede dar más detalles sobre los controladores de eventos? – BreakPhreak
@BreakPhreak Parece que estaba equivocado al respecto. Ver mi respuesta –
- 1. Procedimiento para clonar repositorios Git que usan el subárbol
- 2. ¿Cómo clonar o volver a enviar los eventos DOM?
- 3. ¿Cómo crear y clonar un objeto JSON?
- 4. ¿Cómo guardar y restaurar un formulario?
- 5. Cómo clonar un iterador?
- 6. Cómo clonar un InputStream?
- 7. Cómo exportar y restaurar HSQLDB
- 8. cómo registrar todas las modificaciones del subárbol dom con google developer tools/firebug
- 9. Cómo mover un subárbol a otro subárbol en emacs-modo Org
- 10. Guardar y restaurar CGContext
- 11. SQL - Clonar un registro y sus descendientes
- 12. AS3 - Clonar un objeto
- 13. Mutation Observers --- subárbol
- 14. restaurar el eje y eliminado
- 15. ¿Cómo clonar un objeto generador de Python?
- 16. Cómo puedo clonar un objeto JAXB
- 17. Cómo clonar imagen?
- 18. Cómo clonar() StringBuilder
- 19. cómo clonar un objeto en Android?
- 20. Cómo clonar un objeto Date en JavaScript
- 21. cómo clonar un proyecto en heroku
- 22. ¿Cómo puedo clonar un objeto de diccionario?
- 23. ¿Cómo se puede clonar un objeto WPF?
- 24. Cómo clonar selectivamente un repositorio git
- 25. Cómo clonar un objeto en Flex?
- 26. Cómo clonar() un elemento n veces?
- 27. ¿Cómo restaurar un repositorio de git corrupto?
- 28. ¿Cómo restaurar un formulario mediante programación?
- 29. ¿Cómo restaurar un repositorio existente usando TortoiseSVN?
- 30. cómo restaurar archivos borrados
Gracias. ¿Compartir un voto ascendente, no marcar como una respuesta perfecta, ya que la clonación no admite estilos CSS/controladores de eventos? Estoy en lo correcto, por favor? – BreakPhreak
¿Has leído el material de referencia para 'clone()'? Los primeros argumentos "verdaderos, verdaderos" que se pasan al método significa que copia datos y eventos vinculados a los elementos.El primer 'verdadero' se aplica al elemento clonado, y el segundo 'verdadero' a los elementos secundarios del elemento clonado. Siempre que su hoja de estilo sea compatible con selectores que coincidan con los elementos clonados, entonces sí, CSS se aplicará/se aplicará automáticamente. –
Gracias por indicarme algunos detalles faltantes. – BreakPhreak