执迷 执迷
首页
  • 技术分享

    • 小白都能看懂的闭包
    • GO-GMP模型
    • MySQL调优
    • centos7部署nacos
    • elasticserch
    • redis
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • JavaScript
  • ES6
  • CSS
  • 框架
  • Node
  • 服务
  • 其他
自我介绍
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

执迷

代码也是艺术
首页
  • 技术分享

    • 小白都能看懂的闭包
    • GO-GMP模型
    • MySQL调优
    • centos7部署nacos
    • elasticserch
    • redis
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • JavaScript
  • ES6
  • CSS
  • 框架
  • Node
  • 服务
  • 其他
自我介绍
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
      • 如何优雅的写事件委托
      • 题目如下
      • Element.closest()
      • Element.matches()
      • css属性:pointer-events 阻止元素成为鼠标事件
    • 我喜欢的parcel
    • angular1使用
    • 使用npm script打造前端工作流
    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 后端及运维

  • 年终总结

  • 个人博客
  • 前端
执迷
2022-05-15
目录

如何优雅的写事件代理

# 如何优雅的写事件委托

记得在一个技术面试的时候,面试官问我如果有无数个dom,如何给每个dom添加点击事件,点击获取当前dom的内容,并且要我在编辑器里面写出来,好家伙,我第一个就想到事件委托,下面列出常用的几个事件委托的写法

# 题目如下

点击li获取当前li的内容

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  ...
</ul>
1
2
3
4
5
6

# Element.closest()

Element.closest() 方法用来获取:匹配特定选择器且离当前元素最近的祖先元素(也可以是当前元素本身)。如果匹配不到,则返回 null。

let ul=document.querySelector('ul')
ul.addEventListener('click',(e)=>{
 let text= e.target.closest('li').textContent
 console.log(text)
})
1
2
3
4
5

# Element.matches()

Element.matches()如果元素被指定的选择器字符串选择,Element.matches()  方法返回true; 否则返回false。

let ul=document.querySelector('ul')
ul.addEventListener('click',(e)=>{
  if(e.target.matches('li')){
   let text= e.target.textContent
   console.log(text)
  }
})
1
2
3
4
5
6
7

# css属性:pointer-events 阻止元素成为鼠标事件

可以在css层面去掉点击事件。 该属性也可用来提高滚动时的帧频。的确,当滚动时,鼠标悬停在某些元素上,则触发其上的hover效果,然而这些影响通常不被用户注意,并多半导致滚动出现问题。对body元素应用pointer-events:none,禁用了包括hover在内的鼠标事件,从而提高滚动性能。

#JavaScript#事件代理
上次更新: 2024/07/21, 21:46:04
切换node版本
我喜欢的parcel

← 切换node版本 我喜欢的parcel→

最近更新
01
MySQL调优 原创
08-04
02
MySQL底层 原创
07-30
03
consul单台机器部署,注册外网服务健康检查 原创
07-30
更多文章>
Theme by Vdoing | Copyright © 2019-2024 执迷 | 闽ICP备2022018045号 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式