Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情。
一、通用事件绑定
- 关于IE低版本的兼容性:IE低版本使用sttachEvent绑定事件,和WC标准不一样
- IE低版本使用量非常少,很多网站早已不支持
二、事件冒泡
(一)事件冒泡原理
- 被触发的事件会根据DOM的树形结构向上传递
- 以下面的代码为例,假设给p1,div1和body都绑定了鼠标点击事件,那么当用户点击p1时,会依次执行p1,div1,body绑定的点击事件,这就是事件冒泡(向上传递)
(二)阻止事件冒泡
- 根据事件冒泡的原理,在下面的代码中,如果没有
e.stopPropatation()这一行代码,当用户点击p1标签时,首先会触发p1绑定的事件,即alert('激活') - 然后向上冒泡,div1没有绑定事件,不触发
- 再继续向上冒泡,body绑定了事件,被触发,即
alert('取消') e.stopPropatation()用于阻止事件冒泡,下面的代码如果不取消这一行,当用户点击p1时,就只会触发p1绑定的事件,不会触发body绑定的事件
(三)代理
- 使用代理可以简化代码,减少浏览器内存占用
- 使用
e.target可是获取到事件是从哪里触发的 - 下面的代码中,我们想给div里的每一个a标签绑定点击事件,但是a标签是随时增加的,所以实时给a标签绑定事件不方便。
- 这种情况就可以将响应事件绑定到div上,再通过
e.target获取到实际被点击的a标签
代理的封装
三、面试题
(一)编写一个通用的事件监听函数
(二)描述事件冒泡流程
(三)无限下拉加载图片的页面,绑定事件
- 使用代理