我正在尝试用jqueryCookie制作一个白天/黑夜模式的按钮。我不确定这段代码出了什么问题。第一个"if“语句可以工作并添加cookie,但是一旦我刷新页面,body将删除graybg类,而cookie保留。
$(document).ready(function() {
var btn = $('#modeSwitch'),
body = $('body'),
cookieVal = $.cookie("switchLight");
btn.click(function(e) {
if (cookieVal != "2") {
$.cookie("switchLight", "2", { path: '/' });
body.addClass('graybg');
btn.text('Day');
}else if (cookieVal == "2") {
btn.text('Day');
body.addClass('graybg');
$.removeCookie("switchLight", { path: '/' });
$(this).text('Night');
};
});
});发布于 2014-04-23 04:25:06
您可以使用类似以下内容:
$(function(){
var btn = $('#modeSwitch');
var body = $('body');
var cookieVal = $.cookie("switchLight");
if (cookieVal == "1") {
body.addClass('graybg');
btn.val('Night');
}else{
body.removeClass('graybg');
btn.val('Day');
}
btn.on('click',function() {
var cookieVal = $.cookie("switchLight");
if (cookieVal == "1") {
$.cookie("switchLight", "0", { path: '/' });
body.removeClass('graybg');
$(this).val('Day');
}else{
$.cookie("switchLight", "1", { path: '/' });
$(this).val('Night');
body.addClass('graybg');
}
});
});发布于 2014-04-23 03:59:15
应该只有一个单击处理程序附加到此按钮,而不是两个单击处理程序。现在,这两个单击处理程序都将被调用。
btn.click(function(e) {
if (cookieVal != "2") {
$.cookie("switchLight", "2", { path: '/' });
body.addClass('graybg');
$(this).text('Day');
} else if (cookieVal == "2") {
body.addClass('graybg')
$.removeCookie("switchLight", { path: '/' });
$(this).text('Night');
};
});为了解决在页面刷新时不应用graybg类的问题,这是因为除非响应按钮单击事件,否则不会分配该类,因此您可能需要这样的代码来在页面加载时应用样式。
cookieVal = $.cookie("switchLight");
if(cookieVal === '2') {
btn.addClass('graybg');
}https://stackoverflow.com/questions/23228959
复制相似问题