码迷,mamicode.com
首页 > 编程语言 > 详细

原生js跨浏览事件绑定(移除)/javascript事件绑定(移除)

时间:2014-07-11 12:02:07      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:style   java   color   strong   问题   cti   

网上找了半天没看到,都是基于ie attachEvent(有诸多的问题存在)来写的,所以手动写了个js模拟绑定事件希望能帮到需要的童鞋


addEvent = function(obj,type,fn){
  if(obj.addEventListener) {//W3C
   obj.addEventListener(type,fn,false);
  }else if (obj.attachEvent) {//ie(期待它的灭亡)
   if(!obj.events) obj.events = {};//创建事件存储哈希表,也是对之后的removeEvent所需要的全局变量
   if(!this.EventId) this.EventId = 1;//初始化计数器
   if(!obj.events[type]) {
    obj.events[type] = [];//创建事件存储器
    if(!obj[‘on‘+type]) obj.events[type][0] = fn;//判断第一次是否已经给别人了!!!!
   }else{
    for(var i in obj.events[type]) {//判断该事件添加的fn是否重复
     if(obj.events[type][i] == fn) {
      return false;
     }
    }
    obj.events[type][this.EventId++] = fn;
   }
   
   obj[‘on‘+type] = function(){
    var e = window.event;
    for(var i in obj.events[type]) {
      obj.events[type][i].call(this,e);//ie获取不到this和e所以通过call来获取对象this 以及事件event
    }
   }
  }
 }

 

removeEvent = function(obj,type,fn) {//删除事件这个在上面的基础上就比较容易点了
  if(typeof obj.removeEventListener != ‘undefined‘) {
   obj.removeEventListener(type,fn,false);
  }else if (typeof obj.detachEvent != ‘undefined‘) {
    for(var i in obj.events[type]) {
    if(obj.events[type][i] == fn) delete obj.events[type][i];
   } 
  }
 }

原生js跨浏览事件绑定(移除)/javascript事件绑定(移除),布布扣,bubuko.com

原生js跨浏览事件绑定(移除)/javascript事件绑定(移除)

标签:style   java   color   strong   问题   cti   

原文地址:http://www.cnblogs.com/xxxdw/p/3833867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!