我想存储一个代表 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文件。
关于javascript - 我可以将 jQuery DOM 克隆存储在本地存储中以供以后使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34250229/