什么是JavaScript事件流及事件处理程序详解

JavaScript017

什么是JavaScript事件流及事件处理程序详解,第1张

先提两个关键词,方便你查找更详细的分析:1)事件冒泡 2)事件捕获

然后借用一下网上的一个图:

如图:有三个圆,好比dom中的三个div,当你点击了绿色圆的同时,会有两个连带事件:

点击了蓝圆

点击了粉圆

那么当你这三个圆(div)都绑定了点击事件时,该怎么触发呢,同时触发?显然不是,这是就涉及到一开始给你的两个关键词了。

事件捕获:js会顺着文档流顺序由外往内,依次触发事件。即从DOM树的根到叶子,粉->蓝->绿

事件冒泡:js会逆着文档流顺序由内至外,一次触发事件。即从DOM树的叶子到根,绿->蓝->粉

补充一点:多数时候推荐事件冒泡,因为大多数主流浏览器都兼容两种事件,但一开始ie是不支持事件捕获的,后来ie是否支持最近没有具体了解,应该是可以设置,有需要可以百度一下,本人小菜,以上回答如有错误还请指出,谢谢。

JavaScript中的事件流模型有冒泡事件流、捕获事件流和DOM事件流。其中dom同时支持两种事件模型,但捕获性事件先开始,从document开始也结束于document,dom模型的独特之处在于文本也可以触发事件

冒泡:已图中H2为例,点击H2时,会弹出冒泡,但是在H2的父级绑定点击事件后也会有,而    H2的父级的父级也会有,这样一直往上找,知道醉外一层则停止。

捕获则则冒泡刚好相反,冒泡是向外找,而捕获则是像内找。