addEventListener与attachEvent

addEventListener(type, fn, capture)

这个方法是在现代浏览器中绑定事件所用的,除了 ie6/7/8之外都是支持的。参数的意思分别是:

  • type :事件类型字符串,比如 'click' 'mouseover'
  • fn :事件处理函数
  • capture :这个参数比较独特。举个例子,如果外层元素和内层元素都绑定了click事件,如果capture设为true的话,外层元素的事件将会先响应,反之则否。跟传统由内而外进行事件响应的方式不同。

attachEvent(type, fn)

这个方法是在坑爹的IE678下的事件处理绑定方式

  • type :事件类型字符串,比如 'onclick' 'onmouseover',记住,一定要带 ‘on’
  • fn :事件处理函数

事件多重绑定

  • addEventListener,使用 dom.addEventListener('click', fn, false); 连续绑定,事件处理的顺序是按绑定顺序来,属于先进先出型
  • attacheEvent,则刚好相反,属于后进先出型

事件移除

  • removeEventListener( type, fn ) type 事件类型字符串,fn 函数的引用
  • detachEvent( type, fn ) type 事件类型字符串,记得带 'on',fn 函数的引用

以上两者的fn要注意,必须都是引用,如果说在事件绑定阶段传入的处理函数是匿名函数,那么想要解除绑定估计只有使用非常野蛮的手段了,那就是全部解除。

事件全部移除

最简单的办法就是克隆一个一样的dom出来,将原来的删除。