我有一个简单的代码,允许我在两个div之间切换,这两个div是两个子导航的包装(#sub-nav-wrap是替代导航)。它们固定在浏览器的底部:
$(function(){
$('.button').click(function(){
$('#sub-nav-wrapmin').toggle();
$('#sub-nav-wrap').toggle();
});
});
我希望在页面刷新后保持每个div的状态与用户选择的相同,即使菜单上的新子标题的点击保持不变,而不是采用默认值状态。
html是这样的:
<!--- Main Sub Wrap --->
<div id="bottom-wrap">
<!-- Mini Sub Nav -->
<div id="sub-nav-wrapmin" class="snWrap divone">
<div id="sn-contentmin">
<div id="sn-likemin"></div>
<div id="sn-coffeesml"></div>
<div id="sn-sharemin"></div>
<div id="sn-commentsml"></div>
<div id="toggle-barmin">
<div id="sn-sidebrdrmin"></div>
<div class="sn-toggle button"></div>
</div>
<ul class="sn-comicsmin menu">
<li><a class="sn-comics" style="background-position: right top" href="#comic.html">Comic</a></li>
<li><a class="sn-archive" href="#archive.html">Archive</a></li>
<li><a class="sn-vote" href="#vote.html">Vote</a></li>
<li><a class="sn-spotlight" href="#spotlight.html">Spotlight</a></li>
</ul>
</div>
</div>
<!-- Sub Nav -->
<div id="sub-nav-wrap" class="snWrap divtwo">
<div id="sub-nav-container">
<div id="sub-nav-content">
<div id="sn-bnrlft"></div>
<div id="sn-bnrrgt"></div>
<div class="sn-dividelft"></div>
<div class="sn-dividergt"></div>
<div id="sn-likebg"></div>
<div id="sn-coffeebtn">
</div>
<div id="sn-sharebtn"></div>
<div id="sn-commentbtn"></div>
<div id="toggle-bar">
<div id="sn-sidebrdr"></div>
<div class="toggle button"></div>
</div>
</div>
<div id="sub-nav-brdr">
<ul class="sub-nav-comics menu">
<li><a class="comics" style="background-position: right top" href="#comic.html">Comic</a></li>
<li><a class="archive" href="#archive.html">Archive</a></li>
<li><a class="vote" href="#vote.html">Vote</a></li>
<li><a class="spotlight" href="#spotlight.html">Spotlight</a></li>
</ul>
</div>
</div>
</div>
CSS就是这样:
#sub-nav-wrap {
display: none;
}
这是我第一次询问,而且我一直在绞尽脑汁使用本网站的其他类似代码来解决这个问题,但没有任何效果。 非常感谢任何帮助...
大卫
我构建了一个jsFiddle来显示导航如何在没有cookie的情况下工作。 This是我尝试使用Cookie。我希望这很简单,我很想念......
答案 0 :(得分:1)
你需要jQuery cookie plugin在jQuery中使用cookie。 jQuery中没有本机支持你正在尝试做什么。
如果旧浏览器不是问题,您可以使用本地存储并执行以下操作:
$(function(){
var wrapmin = localStorage.getItem('wrapmin')||false,
wrap = localStorage.getItem('wrap')||false;
if (wrapmin) $('#sub-nav-wrapmin').show();
if (wrap) $('#sub-nav-wrap').show();
$('.button').click(function(){
$('#sub-nav-wrapmin').toggle();
$('#sub-nav-wrap').toggle();
wrapmin = $('#sub-nav-wrapmin').is(':visible');
wrap = $('#sub-nav-wrap').is(':visible');
localStorage.setItem('wrapmin', wrapmin),
localStorage.setItem('wrap', wrap);
});
});
您还需要更改CSS,如果最初显示元素,它将无法正常工作。
Cookie插件已有详细记录。 你通过给它一个名字和一个值来设置一个cookie,即。两个值,而不是一个:
$.cookie('the_cookie', 'the_value');
答案 1 :(得分:1)
我注意到的一件事是jQuery.cookie没有出现在小提琴中,但我认为无论如何你在实际网站上都有。你去Here。我相信有更有效的方法,但这仍然可行。