首页 > 解决方案 > 从 es6 类中的 addEventListener 触发 handleEvent()

问题描述

我昨天了解到,addEventListener您可以使用handleEvent()方法而不是回调函数来传递对象,因此我正在努力实现这一目标。

我指的是这篇文章,以及其他一些解释同样事情的文章。

我认为我的代码是正确的,但出现错误:menuBuilder.js:78 Uncaught TypeError: toggleMobileNav.addEventListener is not a function

这是我基本上拥有的:

class menuBuilder {
  constructor() {
    this.addMobileNavEventListeners();
  }

  handleEvent(event) {
    if (event.type === 'click') {
      // Close the Submenus from Mobile Nav
      if (event.target.closest('.mobile-control-close-submenus')) {
        this.submenus.close();
      }

      // Open / Close Mobile Nav
      if (event.target.closest('.mobile-control-toggle-nav')) {
        this.toggleMobile();
      }
    }
  }

  addMobileNavEventListeners() {
    // Adds Event Listeners for mobile nav...
    // Close Submenu from Mobile Nav
    [...document.querySelectorAll(".mobile-control-close-submenus")].forEach((closeSubMenusIcon) => closeSubMenusIcon.addEventListener("click", this, false));

    // Open / Close Mobile Nav
    [...document.querySelectorAll('.mobile-control-toggle-nav')].forEach((toggleMobileNav) => toggleMobileNav.addEventListener("click", this, false));
  }
}

我对 es6 和香草 javascript 很陌生。我已经在 jQuery 领域生活了太久,但我已经掌握了窍门(我想,哈哈)非常感谢任何帮助!

标签: javascriptevent-handlingaddeventlisteneres6-class

解决方案


推荐阅读