我想用slideToggle做多个垂直菜单,并将切换状态存储在本地存储中,我不明白为什么不存储状态。
我发现这个示例(https://codepen.io/johnyrodni/pen/VVMXJx)可以工作,但是当我尝试将其粘贴到我的实际需求(https://codepen.io/azyme/pen/PrGNpW)上时,就不再有本地存储。
<div id="dropdown-1">
<div class="heading">
Click me
</div>
<ul class="content">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>
<div id="dropdown-2">
<div class="heading">
Click me
</div>
<ul class="content">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>
$(document).ready(function() {
var openTabs = [];
$(".content").hide();
$(".heading").click(function(){
var $this = $(this),
selector = $this.parent().attr('id') + ' .heading';
if ($(this).next('.content').is(':visible'))
{
var pos = openTabs.indexOf(selector);
openTabs.splice(pos, 1);
}
else
{
openTabs.push(selector);
}
localStorage.openTabs = openTabs.join(',');
$this.next(".content").slideToggle();
});
if (localStorage.openTabs)
$(localStorage.openTabs).click();
});
我希望切换器的状态将存储在本地存储中
答案 0 :(得分:1)
这应该解决它。
替换此行:
localStorage.openTabs = openTabs.join(',');
与此:
localStorage.setItem('openTabs', JSON.stringify(openTabs.join(',')))
和这个:
if (localStorage.openTabs)
$(localStorage.openTabs).click();
与此:
if (localStorage.hasOwnProperty('openTabs'))
$(JSON.parse(localStorage.getItem('openTabs'))).click();