JS 事件捕获、事件冒泡以及事件委托图文详解
核心: JS的点击事件会先一层一层捕获到target元素,然后再从target元素沿着路径一层层向上冒泡 最重要的就是理解它的 路径 测试界面: 这里先展示一下路径的形式(以点击测试界面的son为例子) 通过这个path帮助我们理解事件捕获以及事件冒泡:当我们点击了son之后,浏览器先从window一层一层向下找,最终找到我们的son,这个阶段称为事件捕获阶段,捕获结束后,就从target son 一层一层向window冒泡,这个阶段称之为事件冒泡。 我们默认的监听事件都是在冒泡阶段执行的,要想在捕获阶段执行则需要给监听函数的第三个参数赋为true。 从图中我们也可以看到cancleBubble && cancelable && defaultPrevent cancelable的truith代表我们是否可以取消冒泡 cancleBubble的truith代表我们是否取消了冒泡 defaultPrevent的truith代表我们是否禁止默认行为 (题外话,最新版浏览器基本都支持passive,在passive为true的监听事件里调用preventDefault会失效,而且在监听touchstart以及touchmove里默认都是passive:true,所以想要在监听函数里调用preventDefault()禁止页面滚动需要addEventListener的第三个参数为