在页面刷新视图jsFiddle之后使用cookie.js在div上保持切换状态

时间:2012-07-28 18:42:15

标签: javascript jquery html

我有一个简单的代码,允许我在两个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。我希望这很简单,我很想念......

2 个答案:

答案 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,如果最初显示元素,它将无法正常工作。

FIDDLE

Cookie插件已有详细记录。 你通过给它一个名字和一个值来设置一个cookie,即。两个值,而不是一个:

$.cookie('the_cookie', 'the_value');

答案 1 :(得分:1)

我注意到的一件事是jQuery.cookie没有出现在小提琴中,但我认为无论如何你在实际网站上都有。你去Here。我相信有更有效的方法,但这仍然可行。