中易网

JS addEvent和removeEvent求逐句注释

答案:1  悬赏:0  
解决时间 2021-02-28 15:58
JS addEvent和removeEvent求逐句注释
最佳答案
function addEvent(element, type, handler) {
// 检测handler是否有$$guid属性。如果没有,赋值为addEvent的guid属性,将addEvent的guid属性自增1
// 假设handler没有$$guid属性,addEvent的guid为1,则经此判断,
// handler会有一个$$guid属性,且值为1,而addEvent的guid属性值变成2
if (!handler.$$guid)
handler.$$guid = addEvent.guid++;

// 检测element是否已经绑定过事件,如果没有绑定过,
// 则默认设置为一个空对象,用于保存将要绑定的事件
if (!element.events)
element.events = {};

// 获取已经绑定过的type类型的事件对象
var handlers = element.events[type];
// 如果还没有type类型的事件被绑定过,则设置该类型的事件为一个空对象,用于保存将要绑定的该类型的事件
if (!handlers) {
handlers = element.events[type] = {};


}

//按照序号存进去
handlers[handler.$$guid] = handler;

//赋予一个全局事件处理函数来处理所有工作
element["on" + type] = handleEvent;

}

// addEvent保存一个序号
addEvent.guid = 1;

// 移除事件
function removeEvent(element, type, handler) {
// 如果element经过addEvent绑定过事件,并且也有type类型的事件
if (element.events && element.events[type]) {
// 删除element的type类型事件的handler处理器
delete element.events[type][handler.$$guid];
}
}

// 处理事件
function handleEvent(event) {
// 默认返回值为true
var returnValue = true;
// 矫正事件对象event
event = event || fixEvent(window.event);
// 获取已绑定的type类型的处理器
var handlers = this.events[event.type];

// 遍历执行每一个处理器
for (var i in handlers) {
this.$$handleEvent = handlers[i];
// 如果存在返回值为false的处理器,则设置返回值为false
if (this.$$handleEvent(event) === false) {
returnValue = false;
}
}

// 返回处理结果
return returnValue;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
三星有没有和iphone5s屏幕一样大的手机?
铭杰发艺地址在什么地方,想过去办事
成都理工大学医疗保险单掉了,在哪里可以补办
流速与压力原理??
【真心请教】买笔记本电脑买什么类型的好?
胡兰东大街地址在什么地方,想过去办事
谁知道江西省吉安市永丰劳动局电话。。。。
世友地板义乌旗舰店在什么地方啊,我要过去处
吃头孢地尼分散片又喝了点啤酒后面吐了应该没
想帮孩子选一家一对一的机构,有什么推荐的吗
求几本能充实精神世界的书!要真的很好的!
小苏打洗抹布怎么洗
创信保险销售建德分公司地址在哪,我要去那里
怎么样解决对妻子的不信任呢?
978百货商店这个地址在什么地方,我要处理点
推荐资讯
母亲亲哥哥的女儿我应该喊什么,她喊我呢?
2.8x1.6+4.2怎么简便算法分析
神话2修罗、万邪、狂魔、飘渺选什么好。附上
我要自主招生面试了,纯英文,帮忙翻译篇稿子
爱妈咪母婴护理中心凤凰旗舰店我想知道这个在
通辽市辖区内是指通辽市里么
藩僧上单很怕对线杰思或者武器,有什么好的办
德勤在线测试个人详情一页过不去
鱼羊鲜火锅家常菜地址在哪,我要去那里办事
上168初中就能直接上168高中吗
运河上城地址在什么地方,想过去办事
有没有男主是总裁每天做工作很累,有几次还累
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?