jQuery cookie,点击 link 时未保存

jQuery cookie, not saving on link click

所以我使用 carhartl's jQuery cookie plugin 来保持侧边菜单的打开状态。但是,当我单击侧边菜单中的 link 时,cookie 设置为 ,直到我单击侧边菜单中的 link 并且页面刷新 然后它会重置为之前设置的 cookie。

即使 link 的默认操作被禁用并且之后像下面对 Setting a cookie based on the name of the link that is clicked

的回答一样导航,这仍然不起作用

我设置和读取 cookie 的代码

//Side menu sliding
$("#MainMenu > ul li").click(function () {

    //stop sliding event for parent(s) of clicked list item
    $(this).parent().click(function(e) {
        e.stopPropagation();
    });

    //Slide up or down
    $(this).children("ul").eq(0).slideToggle("fast");
    $(this).toggleClass("closed");

    $("#MainMenu > ul li").each(function() {
        $(this).removeClass("selected");
    });
    $(this).addClass("selected");

    // Cookies
    createOpenedCookie();
    createSelectedCookie();


    var link = $(this).find("a").eq(0);
    if (link.length > 0) {
        window.location.href = $(link).attr("rel");
    }

});

//selected
function createSelectedCookie() {
    var selected = 0;
    $("#MainMenu > ul").find("ul, li").each(function (i) {
        if ($(this).hasClass("selected")) {
            selected = i;
        }
    });

    $.cookie("selected", selected, { expires: 7 });
    alert(selected);
}

编辑:

设置 cookie 超时无效

编辑 2:如果 cookie 子目录 (link) 与原始点击目录不同,它似乎只会重置为之前的 cookie。这可能是一些奇怪的行为,特别是与 C# .net 页面(.cshtml 扩展名)的加载/重定向有关。如果我弄明白了,我会post回答。

如果您正在使用 $.cookie(name,value),cookie 设置为没有过期时间,这意味着它会在会话结束时被删除(当浏览器关闭时)。浏览器关闭后,会话 cookie 将被清除。

如果您希望 cookie 在浏览器关闭时仍然可用,请设置过期日期,如 readme 所示:

$.cookie('name', 'value', { expires: 7 });

Cookie 仅相对于它们所在的目录进行设置和读取 - 因此需要在 root 父路径[=18 中设置 cookie =].

$.cookie("name", value, { path: "/" });

jquery cookie not working - same domain different folder