-1

我试图在我的身体标签上切换一个类,同时使用 cookie 来记住用户设置。

使用 jquery cookie 插件,这就是我想出的

$("a#switchit").click(function () {
    if($.cookie('viewState')) {
        $('body').addClass('light') 
        $.cookie('viewState', 'true', { expires: 9999 });
    } else {
        $('body').removeClass('light')
        $.cookie('viewState', null); 
    };
});

我不是 jquery 方面的专家,所以语法和一切都可能是错误的,但希望你能看到我想要实现的目标并让我正确。

我的html:

<a id="switchit">Switch it</a>
4

3 回答 3

1

根据您对我对该问题的评论的回答,您的问题是您需要检查 cookie 的存在并在页面加载以及单击按钮时设置类。

对此进行扩展: cookie 将在页面刷新时保持不变(等待您将过期时间设置为合适的时间范围),而您对 DOM 进行的任何操作(即向正文添加类名)都不会保持不变。

您已经为您的用户正确设置了它以选择他们的配色方案,并且您正在设置您的 cookie 就好了。如果他们在之前的访问中设置了它,您只是省略了您提前检查的部分。

因此,在您的 jQuery 就绪函数中,添加:

$(document).ready(function(){
    if($.cookie('viewState') == 'true'){
        $('body').addClass('light');
    }
});
于 2012-04-09T20:09:33.273 回答
0

逻辑问题,看第2行:

$("a#switchit").click(function () {
    if(!$.cookie('viewState')) {
        $('body').addClass('light') 
        $.cookie('viewState', 'true', { expires: 9999 });
    } else {
        $('body').removeClass('light')
        $.cookie('viewState', null); 
    };
});

看看,当 viewState 为 TRUE 时,你是否设置了 viewState=true。当 viewState 为 NULL 时,您需要设置 viewState=true。

于 2012-04-09T19:58:23.530 回答
0

我认为这会奏效。

$("a#switchit").click(function () {
    var isNotSet = $.cookie('viewState') === null;
    $('body').toggleClass( 'light', isNotSet);
    if (isNotSet) {
      $.cookie('viewState', 'true', { expires: 9999 });
    } else {
      $.cookie('viewState', null); 
    }
});
于 2012-04-09T19:54:52.820 回答