我尝试使用jQuery分配一个对象以进一步处理,但它不起作用。 这是我的代码:
$('.var').on('click', function () {
console.log($(this));
sessionStorage.setItem('object', JSON.stringify($(this)));
console.log(JSON.parse(sessionStorage.getItem('object')));
}
两个控制台日志都没有相同的值。为什么呢?
第二个例子:
$('.var').on('click', function () {
sessionStorage.setItem('object', JSON.stringify($(this)));
var item = JSON.parse(sessionStorage.getItem('object'));
item.addClass('not-work'); //does not work
$(this).addClass('work'); //works
e.preventDefault();
}
我在sessionStorage()上做错了什么。
答案 0 :(得分:2)
JSON.stringify从字符串化对象中剥离方法,因为有效的JSON不包含函数。
示例:
var obj = {
prop: 5,
method: function() {}
};
JSON.stringify(obj);
结果:"{"prop":5}"
答案 1 :(得分:0)
@Ori Drori's answer解释了第一个例子。
在第二个示例中,您获取DOM元素(jquery包装),将其转换为string!
并保存在sessionStorage中。
然后从sessionStorage中获取此string
,为了获取DOM元素而执行JSON.parse
,但是您将获得一个javascript对象,它肯定不是DOM中的元素树(我相信你很期待)&因此,在其上调用.addClass
并不起作用。