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

问题描述:

我有一个简单的代码,它允许我在两个包含两个子导航(#sub-nav-wrap是替代导航)的div之间切换。它们固定在浏览器的底部:在页面刷新视图后使用cookie.js保持div上的切换状态jsFiddle

$(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

@ClarkeyBoy感谢这个例子,但它似乎并没有在你链接到的jsFiddle中工作。你知道如何用cookie.js编码我的例子吗?我会非常喜欢cookie.js的一个工作示例,用我的jsfiddle http://jsfiddle.net/replacement4/nKFt7/60/ – 2012-07-28 21:16:01

+0

嗨大卫,我所做的只是更改链接,使它们被命名 - 即一些文本是链接而不是显示未链接的网址(在它只是普通网址之前)。我没有时间去尝试找到答案,但我现在要看看你。 – ClarkeyBoy 2012-07-28 22:37:06

您需要jQuery cookie plugin才能在jQuery中使用cookie。 jQuery中没有原生支持你正在尝试做的事情。

如果旧的浏览器are'nt一个问题,你可以使用本地存储和执行类似:

$(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'); 
+0

谢谢你的帮助。我的查询是尝试使用cookie.js,我试图使用它,但我没有成功的教程不告诉我如何使用cookie专门为此。如果yu能够告诉我如何使用cookie.js和我的例子,我会非常感激... – 2012-07-28 21:10:35

+0

@adeneo:OP最初特别询问cookie - 如果像我的公司那样,他们支持IE 6,local storage可能不是一个选项仍然。如果本地存储不可用,我们会尝试使用localstorage,但可以使用cookie作为后备。这只是通过创建另一个函数来完成的,该函数尝试设置localstorage,然后继续设置cookie,如果失败。 – ClarkeyBoy 2012-07-28 23:03:03

有一件事我注意到的是,jQuery.cookie是不存在的小提琴,但我假设你有一个对任何情况下的实际网站。 Here你走了。我相信有更有效的方法,但这仍然有效。

+1

感谢天赐聪明的人!谢谢! – 2012-07-31 11:38:53