JQuery还记得CSS布局的变化吗?

时间:2011-06-19 04:27:05

标签: jquery css layout

我使用JQuery作为布局开关工作正常,但是当用户刷新页面时,如果你知道我的意思,没有任何布局选项被“保存”。有没有办法记住即使用户刷新/更改页面也选择了哪个开关选项?

例如,如果后区域bg为黑色且文本为白色,则开关将反转这些颜色,并且除非用户切换回来,否则将保持不变。

我以前用php做过这个,但我想在没有php的情况下这样做,只要jq,如果可能的话。

2 个答案:

答案 0 :(得分:1)

如果您想使用jQuery(或使用HTML5存储本地数据但不是普遍使用或浏览器接受,也不需要),您肯定需要为此设置cookie。

这是一个非常基本的功能,可以从here

设置Cookie
function set_cookie(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}

这是一个非常基本的获取Cookie,也来自here

function get_cookie(c_name){
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x=x.replace(/^\s+|\s+$/g,"");
      if (x==c_name)
        {
        return unescape(y);
        }
      }
}

所以这样的事情应该有效:

var bg_color = get_cookie('bg_color');
if (bg_color != null) { // may want to do more verification here, as well
    $('body').css('backgroundColor', '#' + bg_color);
}
else {
    $('body').css('backgroundColor', '#FFF');
}

然后每当您想要保存颜色时,只需将其设置为:

set_cookie('bg_color', color, 10); // will save `color` in the cookie for 10 days

编辑发布之后,我发现可能有一个内置函数与jQuery设置/获取cookie或至少是一个非常好的插件。 This页面有一些很好的参考。

答案 1 :(得分:0)

您可以使用用户的主题偏好设置Cookie,并在加载时检查该Cookie是否存在。