jquery cookie插件 - 无法使其正常工作?

时间:2011-04-03 10:50:04

标签: jquery jquery-plugins cookies

嘿伙计们, 我的网站上有一个顶栏,其中包含一些重要的信息(就像stackoverflow让你知道当你到达一个新的徽章时,你会看到顶部的黄色栏可以关闭)。

我只是希望当访问者访问我的网站时可以看到该栏。一旦他关闭了酒吧,就应该保存一个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天。

2 个答案:

答案 0 :(得分:3)

$ .cookie无法正常工作的另一个原因(jquery.cookie不删除cookie) - 可能不是在这种情况下,但一般情况下有人可能会看到这个页面需要这个信息 - 是因为您为特定路径设置,但您尝试删除它而不再设置路径。

例:
如果你像这样设置cookie

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

并尝试以这种方式删除它:

$.cookie("CookieName",null);  

不起作用,你必须写:

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

或之前选择的观察路径。

答案 1 :(得分: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将始终为true(因为false为字符串将为“false”,这是真的!)尝试将cookie设置为字符串值:

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

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