美文网首页
11.项目 1-博客前端:封装库--事件绑定[中]

11.项目 1-博客前端:封装库--事件绑定[中]

作者: 好像在哪见过你丶 | 来源:发表于2019-05-15 09:14 被阅读0次

学习要点:

1.问题所在
2.设置代码

本节课,我们主要探讨一下事件绑定,在此之前我们都使用的是传统的事件绑定。这节
点,我们想使用现代绑定对事件进行绑定和删除。

一.问题所在

上一节课,我们用现代事件绑定封装了事件触发和删除,但还有几个问题没有得到解决:
1.无法删除事件;2.无法顺序执行;3.IE 的现代事件绑定存在内存泄漏问题。
我们这节课将尝试着通过使用传统事件绑定对 IE 进行封装。

二.设置代码

//跨浏览器添加事件绑定
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;
}
//通过事件计数器来从第二个事件处理函数开始
obj.events[type][addEvent.ID++] = fn;
//执行所有事件处理函数
obj['on' + type] = function () {
for (var i in obj.events[type]) {
obj.events[type][i]();
}
}
}
}
//每个事件分配一个 ID 计数器
addEvent.ID = 1;

感谢收看本次教程!

相关文章

网友评论

      本文标题:11.项目 1-博客前端:封装库--事件绑定[中]

      本文链接:https://www.haomeiwen.com/subject/kbsuaqtx.html