两种,冒泡和捕获,不对是捕获和冒泡。
document.body.addEventListener("click",function(){console.log("1")},true);
document.body.addEventListener("click",function(){console.log("4")},false);
document.querySelector("header").addEventListener("click",function(){console.log("2")},true);
document.querySelector("header").addEventListener("click",function(){console.log("3")},false);
说明:
- 先不关注捕获还是冒泡。事件激活后是先进行捕获,然后把函数都进行注册,比如一个元素绑定了多个click事件。
- 然后判断addEventListener的第三个参数,ture表示捕获,false表示冒泡;
- 上面的body,header元素绑定了四个事件,ture优于false执行(两个都有,捕获事件优于冒泡),捕获是从body往header(从外到内,对于都是true而言),冒泡是从header往body(从里到外,对于都是false而言)
- 阻止捕获或者冒泡,抛开这两个东西,也就是阻止事件传播。打开chrome控制台,执行
console.dir(window.Event.prototype)
,关注里面的四个方法initEvent、preventDefault、stopImmediatePropagation、stopPropagation
,第一个初始化事件方法,第二个阻止默认行为,第三个百度一下,第四个stop:停止,propagation:传播。 - target、currenttarget,判定当前元素,绑或解或跳过
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。