【发布时间】:2010-03-30 07:46:59
【问题描述】:
根据我之前的问题here 和here,我发现我可以用javascript 设置cookie。我想将它与 jquery 结合起来,为切换的表行设置一个 cookie 状态。我想在重新加载时隐藏隐藏的行。
这是我目前所取得的成就:
// Load cookies if any
if(readCookie('togState')) {
$('table#toggle tr.' + readCookie('togState')).hide();
}
$(function() {
$('table#toggle tr.container').click(function() {
var idTog = $(this).attr('id');
$(this).toggleClass('off').nextAll('.' + idTog).toggle();
setCookie('togState', idTog, 30);
alert('Cookies: ' + readCookie('togState'));
});
});
家长:<tr id="parent-1" class="container">
以下孩子:<tr class="contained parent-1"> 等
如您所见,cookie 已被读取,但在浏览器刷新时并未设置。我做错了什么?
如果父容器被点击,我想要隐藏所有切换的行(它们的类等于其父容器的 ID),因此设置了 cookie。
任何帮助将不胜感激。谢谢。
我用来快速检查的源cookie:
function setCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
setCookie(name,"",-1);
}
更新:
我也试过每个功能都没有运气:
$('table#toggle tr.' + readCookie('togState')).each(function() {
$(this).hide();
});
更新 2:
如果我将检查放在 jquery 中(我使用了 hide()),它可以工作, 但仅适用于单个 cookie。所以现在的实际问题是如何为更多的父行保留更多的cookie?
【问题讨论】:
标签: javascript jquery dom