-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JS 中的事件传播机制和使用场景 #25
Labels
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
一、事件
1. 事件绑定
element.onXXX = function(){}
,例如box.onclick = function(){}, box.onclick = null
。DOM0 事件绑定利用的是给已经存在的私有属性赋值,事件绑定后浏览器会建立监听机制。element.addEventListener('xxx', function(){}, false)
,element.removeEventListener('xxx', fn)
,element.attachEvent('xxx', function(){})
,DOM2 中的监听事件可以给同一个元素对象绑定多个事件形成事件池,事件的执行顺序是按队列的结构依次执行。addEventListener('xxx', function(){}, false)
中xxx
是DOM中的事件也可以自定义,function(){}
中的this
指向element
。addEventListener()
, 第三个参数默认值是 false。true:表示事件在捕获阶段执行
。false 表示事件在冒泡阶段执行
一个小例子
onclick
onkeydown
2. 事件默认行为
3. 阻止默认行为
preventDefault
,以<a></a>
示例4. 事件传播机制
冒泡传播机制
指:触发子元素的事件,父元素的事件也被相继触发,一般认为body
是最外层的元素,这个传播过程就是事件冒泡。捕获机制
:当内部事件触发时,浏览器首先会在外层元素向内查找,找到事件触发的源头,这个过程就是捕获事件。而捕获的目的是为了规划冒泡的传播路径。小思考
二、事件委托(事件代理)
事件委托的场景题1
(面试题)event.stopPropagation() 和 event.preventDefault() 区别
stopPropagation()
是用于阻止事件的进一步传播,但是不能阻止事件的默认行为,像 a 标签点击的默认跳转行为使用场景二
(面试题)event.target 和 event.currentTarget 的区别
参考
2019 再聊移动端 300ms 延迟及 fastClick 原理解析
The text was updated successfully, but these errors were encountered: