使用cookie永久更改CSS

时间:2012-10-19 07:07:44

标签: jquery css cookies

我正在制作一个带有一些jQuery实验的小网站(有点'gamish)。在每个游戏中都有一个目标,当找到并点击目标时,我想对页脚中的心脏符号进行永久性更改。我正在尝试使用cookie-plugin。

指向其中一个子页面的链接:http://www.carlpapworth.com/htmlove/arrows.html

这是页脚CSS:

footer{
position: fixed;
bottom: 0px;
padding: 10px; 
width: 100%;
height: 100px;
background: /*url(../images/bgFooter.png)*/ #dddddd;
z-index: 2000;
}

.heartCollection{
width: 940px;
margin: 0 auto;
text-align: justify;
}

.heartCollection p{
font-size: 13px;
float: none;
width: 100%;
padding: 0;
margin: 0 0 -20px 0;
text-align: center;
position: relative;
}

.heartCollection ul li{
width: auto;
display: inline;
list-style: none;
float: left;
margin: 10px 0 -10px 0;
padding: 0 0 0 98px;
font-size: 70px;
}

.heartCollection ul li a{
font-family: menlo;
color: #cccccc;
}

.found{
color: #ff63ff;
}

.credits{
width: 100%;
height: auto;
margin: 80px auto;
bottom: 0px;
left: -40px;
position: relative;
text-align: right;
}

这是Javascript:

$(document).ready(function() {
    //help
    $('#helpInfo').hide();
    $('#help h2').click(function(){
        $('#helpInfo').show(300);
    });
    $('#helpInfo').click(function() {
        $(this).hide(300);
    });
    //reward  
    $('#reward').hide();
    $('#goal a').click(function(){
        $('#reward').fadeIn(1000);
    });
    //Collection
    $.cookie('class','found',{
    });
    var foundHeart = $.cookie('found');
    $('.exit').click(function(){
        $('#collection1').addClass(foundHeart);
    });

});

没有任何事情发生,所以我做错了什么? 编辑:更重要的是,我该怎么做才能解决它?

3 个答案:

答案 0 :(得分:2)

 var foundHeart = $.cookie('class'); 

你应该按名称获取cookie而不是值:)

答案 1 :(得分:2)

有两件事是错的:

首先,

var foundHeart = $.cookie('found');

您正尝试使用上述功能按名称检索Cookie。相反,你传递的是价值。

cookie参数设置如下:

$.cookie('name', 'value', { options });

因此,您的Cookie名称为“class”,值为“found”。

换句话说

var foundHeart = $.cookie('found');

应该是

var foundHeart = $.cookie('class');

其次,即使您纠正了您的代码无法按预期运行。为什么?因为你正在加载cookie。

此行设置cookie:

$.cookie('name', 'value');

但是你在文档就绪函数中运行它。

您应该将该行移动到此功能中:

$('#goal a').click(function(){
    $('#reward').fadeIn(1000);
    // moved set cookie function here
    $.cookie('class', 'found');
});

因此只有在你达到目标时才会设定。

答案 2 :(得分:0)

试试这个插件: https://github.com/tantau-horia/jquery-SuperCookie

如果不存在,请创建心脏默认cookie:

//name of the cookie: hearts
//name of the hearts: h1,h2,h3,h4,h5,h6
//values: 1 if active, 0 if inactive
if ( !$.super_cookie().check("hearts") ) {
   $.super_cookie().create("hearts",{h1:"0",h2:"0",h3:"0",h4:"0",h5:"0",h6:"0"});
};

找到目标时(目标1的示例)

$("#collection1").addClass('foundHeart');
$.super_cookie().replace_value("hearts","h1","1")

在页面重新加载时,请记住是否选择了心脏

if ( $.super_cookie().read_value("hearts","h1") == "1" ) {
   $("#collection1").addClass('foundHeart');
};