javascript - 如何在 JQuery 中添加和删除类以切换 body 标记上的滚动条

标签 javascript jquery html

我正在努力添加和删除一个类,以便隐藏然后显示 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'));
});

所以一个complete example可能看起来像:

<!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>

关于javascript - 如何在 JQuery 中添加和删除类以切换 body 标记上的滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501439/

相关文章:

Javascript:使用 "for"遍历 2 级深度数组不会产生另一个数组

javascript - 更改元素内容

javascript - 在 iframe 中隐藏 Element Div 并更改 element img

html - jQuery:使 div fadeOut + .live() + .delay() 函数合并

javascript - 如何更改 select2 css

javascript - jQuery-UI 自动完成提交表单点击下拉列表中的项目

javascript - 将容器 #id 添加到 .load ('$(this).attr("href"));

javascript - 从div访问js中的变量

jQuery .html() 在 ie7 中不显示任何数据,但 ie8 可以工作

html - 响应式设计图像不会随着窗口大小的调整而缩放