我当然遇到的问题是,一旦单击切换,切换cookie始终为true。有没有一种方法可以检查切换开关是处于活动状态还是非活动状态,并将该状态保存到Cookie中,然后检查页面刷新是否应该激活暗模式?
jQuery(document).ready(function($) {
$(".toggle").click(function() {
$(".toggle").toggleClass("active");
$("body").toggleClass("night");
$.cookie("toggle", true);
});
if ($.cookie("toggle") == "true") {
$(".toggle").click();
}
});
body.night {
background: #00151f;
color: #fff;
}
.toggle {
position: absolute;
top: 40px;
left: 0px;
background: #fff;
border: 2px solid #00151f;
width: 45px;
height: 20px;
cursor: pointer;
border-radius: 20px;
transition: 0.5s;
}
.toggle.active {
background: #00151f;
border: 1px solid #fff;
}
.toggle:before {
left: 0px;
content: '';
position: absolute;
width: 20px;
height: 20px;
background: #00151f;
border-radius: 50%;
transition: 0.5s;
}
.toggle.active:before {
left: 27px;
background: #fff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="toggle"></div>
答案 0 :(得分:1)
问题是因为即使更改状态,您也只能将cookie设置为true
。要解决此问题,请使用hasClass()
确定UI处于什么状态并相应地设置cookie:
jQuery(document).ready(function($) {
$(".toggle").click(function() {
$(".toggle").toggleClass("active");
$("body").toggleClass("night");
$.cookie("toggle", $(".toggle").hasClass('active'));
});
if ($.cookie("toggle") === "true") {
$(".toggle").addClass("active");
$("body").addClass("night");
}
});