如何在JQuery中添加和删除一个类来切换body标记上的滚动条
How do I add and remove a class in JQuery to toggle a scroll bar on the body tag
我正在构造添加和删除一个类,以便隐藏并在body标签上显示滚动abr。到目前为止,我有以下代码。
<label class="hamburger" for="sidebarToggler" id="menuToggle"></label>
<input type="checkbox" id="sidebarToggler" name="sidebar" value="">
$("#menuToggle").click(function () {
if ($('#menuToggle').hasClass('close-menu')) {
$('body').removeClass('hide-scroll');
}
else {
$('body').addClass('hide-scroll');
}
});
这里有一些事情需要考虑,可能会出错。
确保您有正确的jQuery参考和"就绪"功能
您需要确保您正在编写的任何jQuery代码实际上都可以访问对jQuery库的引用,并且代码本身被包装在一个"就绪"函数中,如下面所示,以确保它只在加载jQuery后被调用:
<!-- Place your jQuery Reference here (or somewhere above here) -->
<script>
// Document ready function
$(function(){
$("#menuToggle").click(function () {
if ($('#menuToggle').hasClass('.close-menu')) {
$('body').removeClass('hide-scroll');
}
else{
$('body').addClass('hide-scroll');
}
});
});
</script>
确保您的标记正确
目前,您的<label>
元素缺少一个结束>
,如果您使用jQuery进行定位,这可能会导致问题(例如导致click
事件未被拾取):
<label class="hamburger" for="sidebarToggler" id="menuToggle"></label>
或者,如果你想把你的复选框包装在里面,只需这样处理:
<label class="hamburger" for="sidebarToggler" id="menuToggle">
<input type="checkbox" id="sidebarToggler" name="sidebar" value="">
</label>
使用toggleClass()
函数简化代码
您的代码可以稍微简化一下,通过使用toggleClass()
函数来切换您的目标类,如下所示:
$("#menuToggle").click(function () {
// Explicitly toggle your class on this element
$(this).toggleClass('close-menu');
// Notice that you don't need the leading '.' when using the hasClass
// function
$('body').toggleClass('hide-scroll',$(this).hasClass('close-menu'));
});
因此,一个完整的例子可能看起来像:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Scroll Hide Testing</title>
</head>
<body>
<label class="hamburger" for="sidebarToggler" id="menuToggle">
<input type="checkbox" id="sidebarToggler" name="sidebar" value="">
</label>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script>
$(function(){
$("#menuToggle").click(function () {
$(this).toggleClass('close-menu');
// Notice that you don't need the leading '.' when using the hasClass
// function
$('body').toggleClass('hide-scroll',$(this).hasClass('close-menu'));
});
});
</script>
</body>
</html>
相关文章:
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 禁用(而不是隐藏)浏览器滚动条
- 在firefox和chrome中的左侧显示iframe滚动条
- jquery:将动画绑定到滚动条位置的更好方法
- 在窗口中添加滚动条
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 使用没有插件的javascript自定义滚动条
- CodeMirror.禁用垂直滚动条
- 在滚动时,在隐藏滚动条和隐藏溢出的同时触发事件
- 可以'无法使滚动条正常工作
- 强制滚动条覆盖页面内容
- 如何隐藏滚动条,但希望它继续工作
- 滚动所有嵌套的滚动条,使HTML元素进入视图
- 使用浏览器滚动条而不是iframe滚动条
- 滚动条在关闭引导对话框后消失
- javascript/获取滚动条位置的回调
- 可调整滚动条大小
- 去掉滚动条
- 如何在JQuery中添加和删除一个类来切换body标记上的滚动条
- 设置溢出:隐藏到body/html隐藏滚动条,但不会禁用Firefox中的滚动