2022-08-14

 addEventListener 和 removeEventListener

EventTarget.addEventListener() 方法将指定的监听器注册到 EventTarget 上,当该对象触发指定的事件时,指定的回调函数就会被执行。事件目标可以是一个文档上的元素 Element,Document和Window或者任何其他支持事件的对象 (比如 XMLHttpRequest)。

addEventListener()的工作原理是将实现EventListener的函数或对象添加到调用它的EventTarget上的指定事件类型的事件侦听器列表中。


使用 addEventListener 监听 click 事件, 监听回调为 clickListener,结合了 Element.contains() 以实现击行为发生在 menuPanel(菜单区域) 区域外,关闭右键弹起的菜单。如下:

mounted () {

    // 监听 click 事件

    document.addEventListener('click', this.clickListener)

  },

  beforeDestroy () {

    // 移除监听

    document.removeEventListener('click', this.clickListener)

  },

clickListener (event) {

  if (this.type === 'detail') return

  if (!this.$refs.menuPanel) return

  // 点击行为发生在 menuPanel(菜单区域) 区域外,关闭右键弹起的菜单

  // element.contains(),有时是非常有用的 api

  if (this.$refs.menuPanel && !this.$refs.menuPanel.contains(event.target)) {

    this.showMenu = false

  }

},

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1....
    CurryCoder阅读 305评论 0 1
  • 方便起见不分parameter[形参,出现在函数定义中]和argument[实参,其值为传入函数的值],一律当作a...
    东月三二阅读 437评论 0 0
  • 在前端开发过程中,页面交互过程和事件机制密不可分,一直以来对于事件相关机制了解的不够深刻,没有好好进行了解,最近花...
    Patrick浩阅读 1,869评论 0 2
  • 记一次实战经历<去哪儿网> vue-cli 2 预备知识 1.Git命令: git add . 放到缓冲区 git...
    Chin是我啊阅读 280评论 0 0
  • 1:逻辑与 语法:表达式1 && 表达式2 如果第一个表达式为真,则返回表达式2 如果第一个表达式为假,则返...
    coder军阅读 599评论 0 0

友情链接更多精彩内容