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
所以我使用 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