javascript - 在页面刷新 View jsFiddle 后使用 cookie.js 在 div 上保持切换状态

标签 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。我希望这是简单的事情,我只是想念理解...

最佳答案

您需要 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');

关于javascript - 在页面刷新 View jsFiddle 后使用 cookie.js 在 div 上保持切换状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703688/

相关文章:

javascript - 如何在滚动时沿 svg 路径为元素设置动画?

javascript - jQuery .focus() 不起作用

javascript - 是否可以加载图像,在内存中对其进行缩放并将其分配为背景图像的 uri?

javascript - 如何从 AngularJS 或 JavaScript 中获取 <option> 的值

javascript - 函数不会在加载时触发,但会在调整大小时起作用

javascript - Vanilla JS 从除 'active' 类之外的所有其他元素中删除类

javascript - 无法在页面加载时触发按钮或 anchor 元素的单击事件

javascript - 确定对象属性是否为 ko.observable

javascript - 对象 #<HTMLFormElement> 的属性 'submit' 不是函数

javascript - 无法将事件监听器附加到 froala 富文本编辑器中呈现的元素