2012-04-09 107 views
-1

我想切换我的身体标记上的一个类,同时使用cookie来记住用户设置。jQuery 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> 
+0

在我看来非常正确的。发生了什么,不应该是? – idrumgood 2012-04-09 19:52:24

+0

这是什么问题?什么不工作?你是否在包含'.cookie()'功能的插件还有其他地方? – Sparky 2012-04-09 19:56:31

+0

@idrumgood基本上类的切换'光'工程的身体标记,但当我刷新页面的类被删除... – Blackbird 2012-04-09 20:07:24

回答

1

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

要展开此操作:Cookie将在页面刷新时保持不变(即使您已为适当的时间范围设置过期时间),而您对DOM做出的任何操作(即向主体添加类名称)将不坚持。

您已将它设置正确,供您的用户选择其配色方案,并且您正在设置您的cookie。如果他们在上次访问时设置了该功能,您只需提前检查该部分即可。

所以,在你的jQuery就绪功能,添加:

$(document).ready(function(){ 
    if($.cookie('viewState') == 'true'){ 
     $('body').addClass('light'); 
    } 
}); 
+0

这是它的伴侣。我真是一个白痴:)非常感谢! – Blackbird 2012-04-09 20:12:50

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); 
    } 
}); 
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。