1

我想要做的是打开和关闭侧边栏切换,它工作正常,但我也希望 cookie 在浏览网站和返回页面时记住侧边栏状态

即:如果关闭则关闭如果打开则打开:

$(document).ready(function($) {
 $('a#side').click(function(){
  $('#sidebar').toggle();
$('a#side').text($(this).text() == 'Show' ? 'Hide' : 'Show');
  $.cookie('side_cookie', 'value');
 return false;
});
if($.cookie('side_cookie')) { 
$('#sidebar').hide(); 
   } else {
$('#sidebar').show();
   }
});

上面的当前代码只记住它是否已关闭并保持关闭状态直到会话结束,因此您必须在每次返回页面时将其打开...

我试图实现的一个例子可以在 vbulletin.com/forum/ 上看到,如果你关闭他们的侧边栏,然后当你返回主页时浏览论坛,它仍然关闭,反之亦然。

任何帮助表示赞赏

4

3 回答 3

0

我认为问题在于 if 条件 if($.cookie('side_cookie'))。试试这个:

$(document).ready(function($) {
 $('a#side').click(function(){
  $('#sidebar').toggle();
$('a#side').text($(this).text() == 'Show' ? 'Hide' : 'Show');
  $.cookie('side_cookie', $(this).text());
 return false;
});
if($.cookie('side_cookie')=='Hide') { 
$('#sidebar').hide(); 
   } else {
$('#sidebar').show();
   }
});
于 2011-01-16T06:19:50.727 回答
0

您必须检查 cookie 的值而不是它的存在。此外,您将 cookie 的值硬编码为value. 将其更改为showhide

// when it is shown
$.cookie('side_cookie', 'show');

// when it is hidden

$.cookie('side_cookie', 'hide');

并检查 cookie 的值

if($.cookie('side_cookie') === "show") {
    // code for showing side bar
}
else {
    // code for hiding the side bar
}
于 2011-01-16T07:23:05.757 回答
0

好的,伙计们,但我把它排序了,它的代码比我想要的要多得多,因为它有很多 .show()/.hide() 而不是 .toggle() 但它现在可以工作了,现在它会做:

$('a#hide').click(function(){
  $('a#hide,#sidebar').hide();
  $('a#show').show();
  $.cookie('side_cookie_hidden', 'hidden');
  $.cookie('side_cookie_show', null);
 return false;
});

$('a#show').click(function(){
  $('a#show').hide();
  $('a#hide,#sidebar').show();
  $.cookie('side_cookie_show', 'show');
  $.cookie('side_cookie_hidden', null);
 return false;
});

if($.cookie('side_cookie_hidden')) { 
$('a#show').show();
$('a#hide,#sidebar').hide(); 
   } else {
$('a#show').hide();
$('a#hide,#sidebar').show(); 
}
于 2011-01-16T08:51:32.863 回答