因此,我使用carhartl的jQuery cookie插件来保持侧边菜单的打开状态。但是,当我单击侧面菜单中的链接时,将设置cookie,直到单击侧面菜单上的链接,页面会刷新,然后在其中重置为先前设置的cookie。
即使该链接的默认操作被禁用并随后进行导航(如以下基于单击链接的名称来设置Cookie的答案),该操作仍然不起作用
我设置和读取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子目录(链接)与原始单击的子目录不同的情况下,它才会重置为先前的cookie。这可能是一些奇怪的行为,专门与C#.net页面(.cshtml扩展名)的加载/重定向有关。如果我找出答案,我会发布答案。
Cookies只能相对于它们所在的目录进行设置和读取,因此需要在根目录或父路径中设置cookie 。
$.cookie("name", value, { path: "/" });
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句