javascript - jQuery .toggleClass() 在打开类后不会关闭类
问题描述
为了更改网站的配色方案,我添加了一个备用类,该类应该通过使用 的按钮打开和关闭.toggleClass()
,但是,当我打开类时,它似乎没有当我再次单击该按钮时切换回来。
CSS
/*
Alternate color (dark) scheme
*/
body.dark {
background-color:#1e1d1b;
}
body.dark #main {
background:#292826 url(background_dark_slice.jpg) repeat-x;
}
body.dark #main .container {
background-image:url(background_dark.jpg);
}
body.dark #footer {
background-image:url(background_dark_footer.jpg);
}
body.dark ul#menu li a.active, ul#menu li a:hover {
color:#ffffff;
}
jQuery
$(document).ready(function(){
var button = document.querySelector('.forjs button');
button.addEventListener('click', function(){
$('.dark').toggleClass();
});
});
解决方案
在
toggleClass()
函数中,您必须提供一个string
表示要检查的类,如果存在/不存在则添加/删除:toggleClass('class');如果您要做类似的事情
$('.myClass').toggleClass('myClass')
-它只会在您第一次触发它时起作用-第二次,.myClass
文档中将没有更多元素-您只是在上一个函数调用中将其删除。由于您还没有提供 HTML,我们无法确定它
document.querySelector('.forjs button')
是否准确 - 请测试是否如此,或提供足够的 HTML 代码。在您的 CSS 中,您已经定义了当:
body
类时发生的更改。因此,在您的情况下,应该应用于:.dark
body.dark {}
toggleClass()
$(body)
$('body').toggleClass('dark');
你的最终功能应该是:
$(document).ready(function(){
var button = document.querySelector('.forjs button');
button.addEventListener('click', function(){
$('body').toggleClass('dark');
});
});
当您混合使用 JQuery 和 vanilla JS 时,建议与其中之一保持一致。
香草JS:
document.querySelector('.forjs button').addEventListener('click', function(){
document.body.classList.toggle('dark');
});
查询:
$('.forjs button').on('click', function(){
$('body').toggleClass('dark');
});
推荐阅读
- sql - 根据时间窗口将销售归因于电子邮件活动
- c# - C# SQLite 多个关键字与 like 命令
- java - 我在确认 java 中的两个密码时遇到困难,我在 if else 中的条件语句看起来不起作用
- javascript - 在关闭键盘建议(在 Android 上)时,如何在 React Native 中安全地切换密码可见性?
- powershell - 使用为此目的格式化的文本文件将文件族移动到自己的文件夹中
- azure - Azure 中 VM 之间的时间同步偏差和偏移量 (VMSS)
- python - Discord 自定义活动属性错误,表情符号对象没有属性“get”
- azure - 如何在 Azure 上重新安装 Windows Server VM
- html - onclick 在第一次点击时不起作用,但在第一次点击后工作正常
- java - 数组中字符串的排列需要以相同的顺序排列,但不是