浏览器事件以及事件代理

之前对事件的了解停留在事件冒泡的概念。 一提到就想到了事件不断的向上冒泡的过程chrome

其实常见的事件模型分为事件冒泡,事件捕获浏览器

  • 事件冒泡

    在咱们使用的全部浏览器中,都支持事件冒泡,即事件由子元素向祖先元素传播。firefox

  • 事件捕获

    在firefox,chrome,safari这类标准浏览器中还支付事件捕获(IE Opera不支持)代理

 捕获阶段是一个和冒泡阶段彻底相反的过程,即事件由祖先元素向子元素传播,和一个石子儿从水面向水底下沉同样,要说明的是在 IE,opera浏览器中,是不存在这个阶段的。   事件

具体实现异同点:safari

attachEvent (IE Opera) 自己这个就只有2个参数List

W3C addEventListener(type,fn,boolean) 注意第三个参数支付

true : 捕获阶段事件代理

false : 冒泡阶段参数

 

事件代理

 

事件代理就是借助事件冒泡来实现的。逻辑很简单

首先咱们须要了解目标元素和祖先元素。事件冒泡就是从目标元素到祖先元素的一个过程。这样就简单了就是当鼠标点击目标元素后。其一定会通过祖先元素。这样的好处就是咱们就没有必要每个子元素都注册一个事件了。只须要在祖先元素上注册一下。祖先元素在这里就有一个代理绑定的过程这就是事件代理了。

须要说明的是我上面也提过了IE Opera 这一类不支持事件冒泡固然就不行了。还有一类事件也不支持事件冒泡好比(blur、focus、load和unload)

 

 

若有啥疑问欢迎一块儿讨论

相关文章
相关标签/搜索