jquery - jQuery:第一次单击时未添加类,但适用于后续单击
问题描述
我试图在单击light-mode
时切换 CSS 类#lights
,并且我想将此更改存储到 cookie 中。以下是我到目前为止所得到的,但是它需要用户单击两次才能正常工作:
jQuery(document).ready(function($) {
if ($.cookie('light-mode') == "yes") {
$("body").addClass("light-mode");
}
$("#lights").click(function() {
if ($.cookie('light-mode') == "undefined" || $.cookie('light-mode') == "no") {
$.cookie('light-mode', 'yes', {
path: '/'
});
$("body").addClass("light-mode");
} else {
$.cookie('light-mode', 'no', {
path: '/'
});
$("body").removeClass("light-mode");
}
});
});
除非我忽略了一些简单的事情,否则问题可能与我使用 cookie 的逻辑有关。
解决方案
也许您可以修改您的方法以将light-mode
类的切换和状态持久性与相应的 cookie 解耦,就像这样?
jQuery(document).ready(function($) {
if ($.cookie('light-mode') == "yes") {
$("body").addClass("light-mode");
}
$("#lights").click(function() {
/* Toggle the class regardless of cookie state */
$("body").toggleClass("light-mode");
/* Update cookie value based on current class assignment */
$.cookie('light-mode', $("body").hasClass("light-mode") ? 'yes' : 'no', { path: '/' });
});
});
推荐阅读
- android - JetpackCompose 布局中的自定义类
- oracle - 将变量与查询中的值进行比较
- wordpress - 如何删除 Wordpress 控制台警告?
- visual-studio - 在 git 操作中运行用于构建 VS 项目(Linux config/wsl)的 powershell 脚本
- java - 在java中为实体创建角色?
- ios - 如果孩子使用环境对象,如何停止刷新视图
- powershell - 在 PowerShell 中从 2 个变量创建递增变量
- html - Python Selenium 从内联的锚点获取链接文本
- algorithm - 为数组中的每个元素查找 k 个最接近的整数
- typescript - 自动导入/类型不适用于我的 NPM 包