手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >关于js注册事件的常用方法
关于js注册事件的常用方法
摘要:不解释,看代码:复制代码代码如下:;(function(){//进行库封装,防止对象污染window['cm']={};/***给对象注册事...

不解释,看代码:

复制代码 代码如下:

;(function(){

//进行库封装,防止对象污染

window['cm']={};

/**

*给对象注册事件

*/

var addListener=function(element,type,fn){

if(typeof element == 'undefined') return false;

if(element.addEventListener){

element.addEventListener(type,fn,false);

}else if(element.attachEvent){

//将事件缓冲到该标签上,已解决this指向window(现fn内this指向element)和移除匿名事件问题

var _EventRef='_'+type+'EventRef';

if(!element[_EventRef]){

element[_EventRef]=[];

}

var _EventRefs=element[_EventRef];

var index;

for(index in _EventRefs){

if(_EventRefs[index]['realFn']==fn){

return;

}

}

var nestFn=function(){

fn.apply(element,arguments);

};

element[_EventRef].push({'realFn':fn,'nestFn':nestFn});

element.attachEvent('on'+type,nestFn);

}else{

element['on'+type]=fn;

}

};

window['cm']['addListener']=addListener;

/**

*移除对象上已注册事件

*/

var removeListener=function(element,type,fn){

if(typeof element == 'undefined') return false;

if(element.removeEventListener){

element.removeEventListener(type,fn,false);

}else if(element.detachEvent){

var _EventRef='_'+type+'EventRef';

if(!element[_EventRef]){

element[_EventRef]=[];

}

var _EventRefs=element[_EventRef]

var index;

var nestFn;

for(index in _EventRefs){

if(_EventRefs[index]['realFn']==fn){

nestFn=_EventRefs[index]['nestFn'];

if(index==_EventRefs.length-1){

element[_EventRef]=_EventRefs.slice(0,index);

}else{

element[_EventRef]=_EventRefs.slice(0,index).concat(_EventRefs.slice(index+1,_EventRefs.length-1));

}

break;

}

}

if(nestFn){

element.detachEvent('on'+type,nestFn);

}

}else{

element['on'+type]=null;

}

};

})();

【关于js注册事件的常用方法】相关文章:

JS实现简单路由器功能的方法

js事件监听器用法实例详解

javascript实现模拟时钟的方法

jQuery实现延迟跳转的方法

Javascript监视变量变化的方法

jQuery基于图层模仿五星星评价功能的方法

javascript常用方法总结

js实现鼠标移到链接文字弹出一个提示层的方法

js比较日期大小的方法

JQuery自动触发事件的方法

精品推荐
分类导航