Javascript 我可以将jQuery DOM克隆存储在本地存储中以供以后使用吗?

Javascript 我可以将jQuery DOM克隆存储在本地存储中以供以后使用吗?,javascript,jquery,serialization,deserialization,clone,Javascript,Jquery,Serialization,Deserialization,Clone,我想存储一个表示DOM元素的jQuery对象,供以后使用。我已经有了这些方法来执行对象和文本的存储和检索,以及从localStorage到localStorage的存储和检索: var Data = { set: function(key, value, session) { if (!key) {return;} if (typeof value === "object") { value = JSON.stringify(value); }

我想存储一个表示DOM元素的jQuery对象,供以后使用。我已经有了这些方法来执行对象和文本的存储和检索,以及从localStorage到localStorage的存储和检索:

 var Data = {
  set: function(key, value, session) {
    if (!key) {return;}

    if (typeof value === "object") {
      value = JSON.stringify(value);
    }
    if(session){
        sessionStorage.setItem(key, value);
    }else{
        localStorage.setItem(key, value);
    }
  },
  get: function(key, session) {
    if(session){
        var value = sessionStorage.getItem(key);
    }else{
        var value = localStorage.getItem(key);
    }

    if (!value) {return;}

    // assume it is an object that has been stringified
    if (value[0] === "{" || value[0] === "[") {
      value = JSON.parse(value);
    }

    return value;
  }
}
谢天谢地,它是基于堆栈溢出源的,除了字符串之外,它还适用于简单对象

我想做的是:

$clone = $('#myform').clone(true);
Data.set('clonedata', $clone);
然后,很久以后,在其他地方:

$retrieved = Data.get('clonedata');
问题是,在这种情况下,它似乎不起作用。jQuery对象不能以这种方式序列化和反序列化,这有一个根本原因吗


这怎么可能有用呢?一种情况是,当用户填写长表单时,在localStorage中持久化(自动保存)表单数据。然后,信息可以在网络中断或无意中的浏览器导航或关闭后返回。

您可以使用大蒜.js进行本地持久化。希望此链接可以帮助您。简单使用,只需包含js文件并添加
data persist=“大蒜”
作为表单属性。即使您的机器断电,它也可以保存表单数据。您可以从此处下载js文件


您应该将其转换为原始html,然后将其存储。Hmmm。但是,我会失去所有以前绑定的事件,对吗?你不能真的这么做。你最好告诉我你为什么需要它behaviour@A.Wolff:实现表单自动保存不是一个充分的理由?有更好的方法吗?然后存储序列化的表单并在加载时呈现它。我将发布一个答案,我试图实现定制的解决方案,但我想这将更好地只使用已经完成的解决方案solution@Ataur:谢谢你推荐大蒜。但有一个问题:它能否正确地重新加载(比如)DOM加载后动态添加的字段?再说一次,它能不能很好地配合
select2
select
?@a.Wolff,我多么希望你不要这么快就放弃这个任务!我充满了期待。@IfediOkonkwo我想一旦添加了一些新元素,回想一下
$(“#myform”).garmal()。也许你们需要在重新初始化插件之前销毁它,但不确定它是如何在内部处理的
它是否可以很好地与select2配合使用呢
它应该可以,但是你肯定需要几周前的测试,我已经看过了sisyphus.js。它拥有与此类似的功能。我做了很多测试。不错,但是关于添加的元素,它只是待办事项列表上的一项。(请参阅,问题是:当用户重新打开一个关闭的浏览器时,DOM结构将不相同,因此检索到的数据将找不到匹配的输入进行绑定。这就是促使我同时存储DOM结构的原因)