Fork me on GitHub

浏览器事件以及事件代理

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

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

  • 事件冒泡

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

  • 事件捕获

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

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

具体实现异同点:

attachEvent (IE Opera) 本身这个就只有2个参数

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

true : 捕获阶段

false : 冒泡阶段

 

事件代理

 

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

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

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

 

 

如有啥疑问欢迎一起讨论

 

 

 

posted @ 2014-06-30 16:42  veSky  Views(398)  Comments(0Edit  收藏  举报