如何获取存储在 localstorage 中的 <a> 元素
How to get a <a> element stored in localstorage
我在 localstorage 中存储了一个 <a>
元素,并试图在一个在 window.onload 事件上运行的函数中取回它。问题是,在存储该元素后我得到 [object Object] 并且当我在其上应用 jquery 时,它会抛出异常。我正在尝试在此处获取它的 parent。谁能帮帮我
我的代码:-
$('a').on('click', function(){
localStorage.setItem('link', $(this));
})
window.onload=function(){
var link = localStorage.getItem('link'); //gives [object Object]
var parent = $(link).parent(); //got error here
}
我正在存储 link,以便我可以将 'active' class 添加到它及其 reload/refresh 页上的 parent 元素。加载时,我希望它们在侧面菜单栏中处于活动状态。
我的侧边栏菜单:-
<ul>
<li id="1">
<ul><li><a href="/pages/1"></a></li><li><a href="/pages/2"></a></li></ul>
</li>
<li id="1">
<ul><li><a href="/pages/3"></a></li><li><a href="/pages/4"></a></li></ul>
</li>
</ul>
您可以做的是在保存到本地存储之前将您的元素转换为字符串,并在从本地存储检索时将其转换回对象。
$('a').on('click', function(){
localStorage.setItem('link', JSON.stringify(this));
var retrievedObject = localStorage.getItem('link');
//do anything with the object from localstorage
console.log(JSON.parse(retrievedObject));
});
或者您可能需要另一种方法。例如,您可以将单击的 a-Element 的索引存储在本地存储中,并在页面加载时重建它,如下面的 pen
https://codepen.io/niklasp-the-looper/pen/Xxxyay?editors=1010
$('ul a').each(function(idx, element) {
$(element).on('click', function() {
localStorage.setItem('linkIdx', idx);
});
});
$('#get').on('click', function() {
var linkIndex = localStorage.getItem('linkIdx');
var element = $('a')[linkIndex];
console.log(element);
});
我希望你明白了。储存超过你真正需要的东西是不明智的。除了存储 jQuery 具有函数的对象之外,如下所述是不可能的。
我在 localstorage 中存储了一个 <a>
元素,并试图在一个在 window.onload 事件上运行的函数中取回它。问题是,在存储该元素后我得到 [object Object] 并且当我在其上应用 jquery 时,它会抛出异常。我正在尝试在此处获取它的 parent。谁能帮帮我
我的代码:-
$('a').on('click', function(){
localStorage.setItem('link', $(this));
})
window.onload=function(){
var link = localStorage.getItem('link'); //gives [object Object]
var parent = $(link).parent(); //got error here
}
我正在存储 link,以便我可以将 'active' class 添加到它及其 reload/refresh 页上的 parent 元素。加载时,我希望它们在侧面菜单栏中处于活动状态。 我的侧边栏菜单:-
<ul>
<li id="1">
<ul><li><a href="/pages/1"></a></li><li><a href="/pages/2"></a></li></ul>
</li>
<li id="1">
<ul><li><a href="/pages/3"></a></li><li><a href="/pages/4"></a></li></ul>
</li>
</ul>
您可以做的是在保存到本地存储之前将您的元素转换为字符串,并在从本地存储检索时将其转换回对象。
$('a').on('click', function(){
localStorage.setItem('link', JSON.stringify(this));
var retrievedObject = localStorage.getItem('link');
//do anything with the object from localstorage
console.log(JSON.parse(retrievedObject));
});
或者您可能需要另一种方法。例如,您可以将单击的 a-Element 的索引存储在本地存储中,并在页面加载时重建它,如下面的 pen
https://codepen.io/niklasp-the-looper/pen/Xxxyay?editors=1010
$('ul a').each(function(idx, element) {
$(element).on('click', function() {
localStorage.setItem('linkIdx', idx);
});
});
$('#get').on('click', function() {
var linkIndex = localStorage.getItem('linkIdx');
var element = $('a')[linkIndex];
console.log(element);
});
我希望你明白了。储存超过你真正需要的东西是不明智的。除了存储 jQuery 具有函数的对象之外,如下所述是不可能的。