【问题标题】:Converting Jquery sidenav into vanilla js [closed]将 Jquery sidenav 转换为 vanilla js [关闭]
【发布时间】:2018-02-14 22:53:52
【问题描述】:

我对 jquery 非常熟悉,但我正在尝试学习 vanilla js。我将如何将此 jquery sn-p 转换为 vanilla JS?

(function($) {
  $(function() { // DOM Ready

    // Toggle navigation
    $('#nav-toggle').click(function() {
      this.classList.toggle("active");
      // If sidebar is visible:
      if ($('body').hasClass('show-nav')) {
        // Hide sidebar
        $('body').removeClass('show-nav');
      } else { // If sidebar is hidden:
        $('body').addClass('show-nav');
        // Display sidebar
      }
    });
  });
})(jQuery);

【问题讨论】:

标签: javascript jquery nav


【解决方案1】:

这是原生 js 版本

document.addEventListener("DOMContentLoaded", function(event) {
    document.getElementById('nav-toggle').addEventListener('click', function() {
      this.classList.toggle("active");

      var body = document.querySelector('body');
      // If sidebar is visible:
      if (body.classList.contains('show-nav')) {
        // Hide sidebar
        body.classList.remove('show-nav');
      } else { // If sidebar is hidden:
        body.classList.add('show-nav');
        // Display sidebar
      }
    });
});

资源

【讨论】:

  • 仅供参考,您缺少 “文档准备就绪” 部分
  • var body = document.querySelector('body'); ...或只是var body = document.body;
  • 不,即使是 IIFE 也不和 $(function() { // DOM Ready 一样
  • @phil 有些人不赞成回答懒惰的问题
  • 整个"if has class, remove else add class"可以简化为document.body.classList.toggle('show-nav')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 2016-10-30
  • 1970-01-01
  • 2020-07-21
  • 2021-03-11
  • 2021-02-17
  • 1970-01-01
相关资源
最近更新 更多