<div class='爷爷'>
<div class='爸爸'>
<div class='儿子'>文字</div>
</div>
</div>
捕获
捕获从 爷爷 => 爸爸 => 儿子 看有没有函数监听
由外向内找监听函数, 叫事件监听
冒泡
冒泡从 儿子 => 爸爸 => 爷爷 看有没有函数监听
由内向外找监听函数, 叫事件冒泡
冒泡事件
微软提出的 事件由子元素传递到父元素的过程,叫做冒泡
捕获事件
网景提出的 事件由父元素到子元素传递的过程,叫做捕获
捕获与冒泡
W3C标准 首先 捕获 ,再冒泡
其中文字(示例代码中)就是事件监听和事件冒泡的目标.因此DOM事件模型分为3个阶段:
(1)捕获阶段:事件从window对象自上而下向目标节点传播的阶段(示例代码中简化为: 爷爷->爸爸->儿子);
(2)目标阶段:真正的目标节点正在处理事件的阶段;(示例代码中: 文字)
(3)冒泡阶段:事件从目标节点自下而上向window对象传播的阶段(示例代码中简化为: 儿子->爸爸->爷爷)。
绑定在被点击元素的事件是按照代码的顺序发生的,其他非绑定的元素则是通过冒泡或者捕获的触发。按照W3C的标准,先发生捕获事件,后发生冒泡事件。所以事件的整体顺序是:非目标元素捕获 -> 目标元素代码顺序 -> 非目标元素冒泡
事件绑定 API addEventListener
W3C: baba.addEventListener('click',fn,bool)
如果不传bool值 默认为false,冒泡
如果 bool 值为 true, 捕获
target 与 currentTarget 区别
e.target 用户操作的元素
e.currentTarget 程序员监听的元素
取消冒泡
捕获不能取消,冒泡可以 e.stopPropagation 中断冒泡