2015-05-02 93 views
0

所以我使用carhartl's jQuery cookie plugin为了保持我的菜单的打开状态。但是,当我点击侧边菜单中的链接时,Cookie将被设置为,直到我点击侧边菜单上的链接并刷新页面,然后重新设置为之前设置的cookie。jQuery cookie,不保存链接点击

这仍然IF链接的默认操作被禁止,是继导航像下面的答案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); 
} 

编辑甚至不工作:

设置超时的饼干有没有影响

编辑2:它似乎只重置为以前的cookie,如果cookie子目录(链接)不同于原始点击。这可能是一些奇怪的行为,专门用于加载/重定向C#.net页面(.cshtml扩展名)。如果我弄清楚,我会发布一个答案。

+1

你是如何设置cookie?请添加代码。 –

+0

@ChiMo - 你还没有显示_sets_ cookie的代码... – JAAulde

+0

编辑,希望它澄清一点 – ChiMo

回答

0

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

如果你想的cookie可用,即使浏览器被关闭,设置如图所示readme截止日期:

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

这似乎是正确的答案,除了OP声明该cookie不是目前在_page reload_上。他没有提到关闭浏览器。我怀疑这个问题的描述不正确,你说的是对的,但是应该对OP做出澄清。 – JAAulde

+0

这不会影响任何问题的行为 – ChiMo

+0

从以前的问题,我错误地明白,由于到期时间,页面刷新上的cookie已经过期。看起来,每当页面刷新时,实际问题的cookie值重置为默认值。 。 – Srini