【凤凰社】JS中注册与移除事件的几种方式

一、注册事件

1、通过element.onclick方法注册事件,存在无法给同一个对象的同一个事件注册多个事件处理函数的问题

2、通过element.addEventListenner(eventName, fn, flag)方法注册事件,存在浏览器兼容性的问题(IE9以后才支持此方法)第一个表示什么事件类型,注意没有on,第二个指定方法,第三个是标示是事件冒泡(true)还是事件捕获(false),涉及到从下到上还是从上到下的事件发生顺序.

3、通过element.attachEvent()方法注册事件,同样存在浏览器兼容性的问题(IE6-IE10特有的方法)

  //判断当前浏览器是否支持此方法
  if(element.addEventListener){
     element.addEventListener(eventName,fn,flag)
   }else if(element.attachEvent){
     element.attachEvent("on"+eventName,fn,flag);
   }else{
      // 相当于element.onclick=fn;
      element["on"+eventName]=fn;
   }

二、移除事件

1、使用element.onclick=null来移除

2、使用element.removeEventListener(eventName, fn)来移除

3、使用element.detachEvent()来移除(IE9-IE10支持)

function removeEventListener(element,eventName,fn){
  if(element.removeEventListener){
    element.removeEventListener(eventName,fn);
  }  else if(element,detachEvent){
    element.detachEvent("on"+eventName,fn);
  }else{
    element["on"+eventName]=null;
  }
}

 


0 评论

回复