封装了一个支持匿名函数的Javascript事件监听器
2023-06-13 09:15:27 时间
关于js中的事件监听大家用的比较多了,无非是判断浏览器是否支持addEventListener和attachEvent,网上搜索关于事件监听的方法也挺多,但是总有些不是很完善。下面的方法中对于添加事件监听的方法是一样的,只不过在取消事件绑定上面做了点手术,现在可以支持匿名函数的使用,所以在绑定事件的时候不再需要给函数单独命名了。
主要代码:
/*绑定事件与取消绑定*/
varhandleHash={};
varbind=(function(){
if(window.addEventListener){
returnfunction(el,type,fn,capture){
el.addEventListener(type,function(){
fn();
handleHash[type]=handleHash[type]||[];
handleHash[type].push(arguments.callee);
},capture);
};
}elseif(window.attachEvent){
returnfunction(el,type,fn,capture){
el.attachEvent("on"+type,function(){
fn();
handleHash[type]=handleHash[type]||[];
handleHash[type].push(arguments.callee);
});
};
}
})();
varunbind=(function(){
if(window.addEventListener){
returnfunction(el,type){
if(handleHash[type]){
vari=0,len=handleHash[type].length;
for(i;i<len;i+=1){
el.removeEventListener(type,handleHash[type][i]);
}
};
};
}elseif(window.attachEvent){
returnfunction(el,type){
if(handleHash[type]){
vari=0,len=handleHash[type].length;
for(i;i<len;i+=1){
el.detachEvent("on"+type,handleHash[type][i]);
}
};
};
}
})();
原理解析:
handleHash做哈希表缓存事件的function,handleHash["事件名称"]是一个数组,来添加多个事件监听的方法,unbind哪个事件的时候遍历handleHash["事件名称"]的数组,然后移除。
使用:
bind(obj,"click",function(){
alert("click");
});
unbind(obj,"click");
相关文章
- 【说站】JavaScript二分查找算法的使用
- JavaScript学习总结(九)——Javascript面向(基于)对象编程详解编程语言
- 20款处理键盘事件的JavaScript库
- Javascript里使用Dom操作Xml
- JavaScript中的事件教程
- javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
- javascript支持链式调用的异步调用框架Async.Operation
- javascript触发事件列表比较不错
- javascript面向对象编程万物皆对象
- 用javascript实现jquery的document.ready功能的实现代码
- javascript键盘事件总结推荐
- JavaScript操作键盘的Enter事件(键盘任何事件),兼容多浏览器
- Javascript异步加载详解(浏览器在javascript的加载方式)
- javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
- 通过javascript获取iframe里的值示例代码
- JavaScript上万关键字瞬间匹配实现代码
- Javascript事件实例详解
- javascript中动态加载js文件多种解决办法总结
- 在JavaScript中使用timer示例
- javascript移动设备Web开发中对touch事件的封装实例
- Javascript封装DOMContentLoaded事件实例
- PHP中的多行字符串传递给JavaScript的两种方法
- JavaScript函数模式详解
- 21个JavaScript事件(Events)属性汇总
- Javascript基础教程之JavaScript语法
- javascript实现在某个元素上阻止鼠标右键事件的方法和实例
- 在JavaScript里防止事件函数高频触发和高频调用的方法