2011-04-03 89 views
3

嗨, 我有我的用户在我的网站的一些重要信息一顶栏(就像计算器可以让你知道当你达到你看到上面这条黄色可以关闭一个新的徽章)。jquery cookie插件 - 无法让它工作?

我只是想有有栏可见,当游客来到我的网站。一旦他关闭了酒吧,应该保存一个cookie并且酒吧不应该再次出现。

因此我使用jQuery插件的cookie。任何想法为什么这不起作用?

var topInfo = $.cookie('topinfo'); 

    if (topInfo) { 
     $('#topBar').hide(); 
    } else { 
     $('#topBar').show(); 
    } 

    $('#topBar .topBarCloser').click(function() { 
     $(this).parent().slideUp({ 
      duration: 300, 
      easing: 'easeOutQuint', 
      complete: function() { 
       $(this).remove(); 
       $.cookie('topinfo', true, { expires: 1000 }); 
      } 
     }); 
    }); 

我在做什么错在这里!我已将过期日期设置为1000天。

+0

是一个cookie必须的?它似乎不是一种记住“从不”的好东西:)也许可以使用ajax为数据库保存一个值,以表示消息已关闭?或者删除一个值,可能会更合适。 – 2011-04-03 10:55:36

+0

做cookie退出? – 2011-04-03 11:07:25

回答

2

我不知道你使用的cookie的插件,但如果它是这一个:http://plugins.jquery.com/files/jquery.cookie.js.txt

于是说:

@param String name The name of the cookie. 
@param String value The value of the cookie. 

所以值必须是一个字符串 - 你将其设置为布尔值。这可能意味着,topInfo将永远是真正的尝试该cookie设置为一个字符串值(因为假作为字符串将是“假的”,这是真的!):

$.cookie('topinfo', "on", { expires: 1000 }); 

// and then... 
if (topInfo === "on") { 
    ... 
} 
3

另一个原因是$ .cookie可能不工作(jquery.cookie不删除Cookie) - 也许不是在这种情况下,但一般会有人看这个页面,需要此信息 - 是因为你将其设置为特定路径但你试图删除它,而无需再次设置路径。

例如:
如果你这样设置

$.cookie("CookieName", "yourValue", { path: '/' }); 

Cookie,并尝试删除这样说:

$.cookie("CookieName",null); 

这是行不通的,你必须写:

$.cookie("CookieName", null, { path: '/'}); 

或wathever路径您之前选择。

+1

非常感谢这个提示。 – LeEnno 2013-06-12 12:22:32

+0

我很高兴我的信息很有用:-) – 2013-09-11 12:37:11