15Js面试题-事件

114 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情

一、通用事件绑定

image.png

  • 关于IE低版本的兼容性:IE低版本使用sttachEvent绑定事件,和WC标准不一样
  • IE低版本使用量非常少,很多网站早已不支持

二、事件冒泡

(一)事件冒泡原理

  • 被触发的事件会根据DOM的树形结构向上传递
  • 以下面的代码为例,假设给p1,div1和body都绑定了鼠标点击事件,那么当用户点击p1时,会依次执行p1,div1,body绑定的点击事件,这就是事件冒泡(向上传递)

image.png

(二)阻止事件冒泡

  • 根据事件冒泡的原理,在下面的代码中,如果没有e.stopPropatation()这一行代码,当用户点击p1标签时,首先会触发p1绑定的事件,即alert('激活')
  • 然后向上冒泡,div1没有绑定事件,不触发
  • 再继续向上冒泡,body绑定了事件,被触发,即alert('取消')
  • e.stopPropatation()用于阻止事件冒泡,下面的代码如果不取消这一行,当用户点击p1时,就只会触发p1绑定的事件,不会触发body绑定的事件

image.png

(三)代理

  • 使用代理可以简化代码,减少浏览器内存占用
  • 使用e.target可是获取到事件是从哪里触发的
  • 下面的代码中,我们想给div里的每一个a标签绑定点击事件,但是a标签是随时增加的,所以实时给a标签绑定事件不方便。

image.png

  • 这种情况就可以将响应事件绑定到div上,再通过e.target获取到实际被点击的a标签 image.png

代理的封装

image.png

image.png

三、面试题

(一)编写一个通用的事件监听函数

(二)描述事件冒泡流程

(三)无限下拉加载图片的页面,绑定事件

  • 使用代理