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

标签 javascript jquery serialization deserialization clone

我想存储一个代表 DOM 元素的 jQuery 对象,以供以后使用。我已经有了这些方法,可以在 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;
  }
}

值得庆幸的是,它基于 Stack Overflow 源代码,并且适用于除字符串之外的简单对象。

我正在考虑这样做:

$clone = $('#myform').clone(true);
Data.set('clonedata', $clone);

然后,很久以后,在其他地方:

$retrieved = Data.get('clonedata');

问题是,在这种情况下它似乎不起作用。 jQuery 对象不能以这种方式序列化和反序列化是否有根本原因?

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

最佳答案

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

http://garlicjs.org/

关于javascript - 我可以将 jQuery DOM 克隆存储在本地存储中以供以后使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34250229/

相关文章:

jquery - 当我删除类时,为什么我的 jQuery 选择器没有注意到?

javascript - 刷新 Google map 信息窗口中的内容

c# - 如何重命名序列化为 XML 但继续支持以前名称的枚举?

javascript - Angular 1.3 - 将 Id 添加到 ng-options 内的选项标签

javascript - 如何更好地组织网格线?

javascript - 使用 Angularjs 进行文本打印时出现延迟

c++ - Boost 将对象序列化为 json

javascript - 使用 React hooks 设置状态后如何从组件调用事件?

javascript - “onclick”存储值不起作用

.net - 在使用 .NET XmlSerializer 类时,是否有其他人在 MonoTouch 中经历过缓慢的反序列化?