博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个前端博客(7)——事件绑定和移除事件
阅读量:4329 次
发布时间:2019-06-06

本文共 1736 字,大约阅读时间需要 5 分钟。

//绑定事件function addEvent(obj, type, fn) {    if(typeof obj.addEventListener != 'undefined') {        obj.addEventListener(type, fn, false);    } else {        //创建一个存放事件的哈希表        if(!obj.events) obj.events = {};        //第一次执行时执行        if(!obj.events[type]) {            //创建一个存放事件处理函数的数组            obj.events[type] = [];            //把第一次的事件处理函数先存储到第一个位置上            if(obj['on' + type]) obj.events[type][0] = fn;        }else{            //同一个注册函数进行屏蔽,不添加到计数器中            if(addEvent.equal(obj.events[type], fn)) return false;        }        //从第二次开始我们用事件计数器来存储        obj.events[type][addEvent.ID++] = fn;        //执行事件处理函数        obj['on' + type] = addEvent.exec;    }}addEvent.ID = 1;//执行事件处理函数addEvent.exec = function(event) {    var e = event || addEvent.fixEvent(window.event);    var es = this.events[e.type];    for(var i in es) {        es[i].call(this, e);    }}//同一个注册函数进行屏蔽addEvent.equal = function(es, fn) {    for(var i in es){        if(es[i] == fn) return true;    }    return false;}//把IE常用的Event对象配对到W3C中addEvent.fixEvent = function(event) {    event.preventDefault = addEvent.fixEvent.preventDefault;    event.stopPropagation = addEvent.fixEvent.stopPropagation;    return event;};//IE阻止默认行为addEvent.fixEvent.preventDefault = function() {    this.returnValue = false;}//IE取消冒泡addEvent.fixEvent.stopPropagation = function() {    this.cancelBubble = true;}//移除事件function removeEvent(obj, type, fn) {    if(typeof obj.removeEventListener != 'undefined') {        obj.removeEventListener(type, fn);    }else {        for(var i in obj.events[type]) {            if(obj.events[type][i] == fn) {                delete obj.events[type][i];            }        }    }}

 

转载于:https://www.cnblogs.com/targeral/p/4925089.html

你可能感兴趣的文章
Memcache存储大数据的问题
查看>>
HDU 5050 Divided Land(进制转换)
查看>>
python进阶学习笔记(三)
查看>>
javascript语法之Date对象与小案例
查看>>
Day45 jquery表格操作、轮播图
查看>>
POJ 2079 Triangle 旋转卡壳求最大三角形
查看>>
【模板】树链剖分
查看>>
计算机博弈研究——六子棋
查看>>
在Visualforce page中用自带的控件实现Ajax回调后台方法(并且可以用js去动态给parameters赋值)...
查看>>
Android驱动开发第七章
查看>>
ISO 9141-2 and ISO 14230-2 INITIALIZATION and DATA TRANSFER
查看>>
特征点检测--基于CNN:TILDE: A Temporally Invariant Learned DEtector
查看>>
CSS3_实现圆角效果box-shadow
查看>>
springboot集成Spring Session
查看>>
java-集合学习-底层实现
查看>>
android学习—— setContentView() 的前世今生
查看>>
CyclicBarrier和CountDownLatch笔记
查看>>
MySQL数据库基本操作
查看>>
commands 模块 分类: python 小练习 ...
查看>>
Ubuntu系统下配置PHP支持SQLServer 2005
查看>>