我正在尝试使用jQuery Cookie plugin
创建一个“高对比度”风格切换器我现在已经沉溺了几个小时,在stackoverflow.com上阅读了很多问题,但我没有解决我的问题。
想法是在点击id为“switch”的span元素时在body标签上切换类“highcontrast”。在CSS样式表里面我有一套规则,如果body标签有“highcontrast”类,我想申请。
这是上面场景的jQuery代码:
$("#switch").click(function () {
$.cookie('bodyclass', 'highcontrast', { expires: 7, path: '/' });
$('body').toggleClass('highcontrast');
});
如果单击切换元素,则会切换体类。 现在,如果你转到另一个页面,cookie就在那里并设置了值,但是body class“highcontrast”不再存在。
我错过了什么?
答案 0 :(得分:5)
好的,这已经过验证并正常工作......
HTML:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Style Switcher</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="../../plugins/cookie/jquery.cookie.js"></script>
<script src="switch.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<span id="switch">Switch</span>
</body>
</html>
jQuery的:
$(document).ready(function(){
// Check (onLoad) if the cookie is there and set the class if it is
if ($.cookie('highcontrast') == "yes") {
$("body").addClass("highcontrast");
}
// When the span is clicked
$("#switch").click(function () {
// Check the current cookie value
// If the cookie is empty or set to no, then add highcontrast
if ($.cookie('highcontrast') == "undefined" || $.cookie('highcontrast') == "no") {
// Set cookie value to yes
$.cookie('highcontrast','yes', {expires: 7, path: '/'});
// Add the class to the body
$("body").addClass("highcontrast");
}
// If the cookie was already set to yes then remove it
else {
$.cookie('highcontrast','no', {expires: 7, path: '/'});
$("body").removeClass("highcontrast");
}
});
});
CSS:
body {
width:100%;
height:100%;
}
body.highcontrast {
background-color:#000;
color:#fff;
}
答案 1 :(得分:0)
在你的页面加载上尝试这样的事情:
if ( $.cookie('bodyclass') ) {
$('body').toggleClass('highcontrast');
}
答案 2 :(得分:0)
您需要根据用户的需要设置highcontrast
的值,并在页面加载时读取它。
// switch cookie
$("#switch").click(function() {
// check current cookie
var current = $.cookie('highcontrast');
// set new cookie and adjust contrast
if (current) {
// remove cookie
$.cookie('highcontrast', null);
// remove class
$('body').removeClass('highcontrast');
} else {
// add cookie
$.cookie('highcontrast', 1, { expires: 7, path: '/' });
// add class
$('body').addClass('highcontrast');
}
});
// set contrast on page load
$(function() {
var value = $.cookie('highcontrast');
if (value) {
// add contrast class
$('body').addClass('highcontrast');
}
});
答案 3 :(得分:0)
在document.ready
上检查预设的Cookie,如果存在则设置值,然后将其添加到正文中。
示例强>
$(document).ready(function(){
if($.cookie('bodyclass'))
{
$('body').addClass($.cookie('bodyclass'));
}
});