JQuery模块分析及其实现第五部分事件部分功能及实现,接第四部分!
remove 方法
- 功能:将筛选出来的所有 dom元素删除掉
- 实现思路- 遍历 this上的所有dom元素;
- 获取当前 dom元素的父节点,调用removeChild方法删除自己;
- 循环结束,返回 this.
 
- 遍历 
| 1 | remove: function() { | 
empty 方法
- 功能:将筛选出来的所有 dom元素,清空后代节点
- 实现思路- 遍历 this上的所有dom元素;
- 直接给当前 dom元素的innerHTML属性赋值为空字符串;
- 循环结束,返回 this,实现链式编程.
 
- 遍历 
| 1 | empty: function() { | 
以上接第四部分 dom 操作模块
事件部分begin
事件绑定
- DOM 0方式 - 通过 dom元素的on + 事件名属性来绑定事件,并且赋值为 一个字符串;
- 上述字符串为 执行该事件的代码块(逻辑);
- 缺点:可读性以及可维护性不好.
 
- 通过 
- DOM 0方式的加强版 - 通过 dom元素的on + 事件名属性来绑定事件,并且赋值为 一个事件处理函数;
- 缺点:定义很多的全局函数,容易造成内存过大的损耗,依然没有解决 js代码和html的耦合度关系;
 
- 通过 
- IE标准 - 通过 attachEvent来绑定事件;
- 语法: dom.attachEvent(type, callback);
- 移除事件: detachEvent(type, callback);- 注意:如果想要删除某个事件的处理函数,不能将该处理函数定义为匿名的
 
 
- 通过 
- W3C标准 - 通过 addEventListener方法来给dom元素绑定事件;
- 语法: dom.addEventListener(type, callback, useCapture默认值为false);
- 移除事件: removEventListener(type, callback);- 注意:如果想要删除某个事件的处理函数,不能将该处理函数定义为匿名的
 
 
- 通过 
- 事件流 - 概念: 用户在触发某一动作时,页面所做相关反映的过程
- 三个阶段:- 事件捕获阶段
- 处于事件源阶段
- 冒泡阶段
 
- 事件流种类- 捕获型事件流: 事件处理函数是在事件的捕获阶段执行
- 冒泡型事件流: 事件处理函数是在事件的冒泡阶段执行
 
 
- attachEvent 和 addEventListener 区别 - 参数个数不同
- 事件类型传值不同- IE标准需要加- on前缀
- W3C标准不加- on前缀
 
- 在绑定多个事件处理函数时,IE在执行事件处理函数时,顺序不定(根据版本),而W3C按照对垒结构来一次执行事件的处理函数
- 在事件处理函数内 this指向不同- IE: window
- W3C: 返回正在执行事件的处理函数的 dom元素
 
- IE: 
 
addEvent 方法
- 根据浏览器能力,提前返回事件绑定方法
- 如果浏览器符合 W3C标准,使用addEventListener来绑定事件
- 否则就使用 attachEvent来绑定事件
| 1 | //提前返回 | 
removeEvent 方法
- 根据浏览器能力,提前返回事件移除方法
- 如果浏览器符合 W3C标准,使用removeEventListener来移除事件处理函数
- 否则就使用 detachEvent来移除事件处理函数
| 1 | //提前返回 | 
on 方法
- 功能:给 itcast对象上的所有的dom元素绑定事件
- 实现思路- 遍历 this上所有dom元素
- 调用 addEvent给当前遍历到的dom元素绑定事件
- 返回 this,实现链式编程
 
- 遍历 
| 1 | on: function(type, callback, capture) { | 
off 方法
-  功能:移除 itcast对象上所有dom元素的事件处理函数
- 实现思路- 遍历 this上所有dom元素
- 调用 removeEvent给当前遍历到的dom元素移除相应事件的处理函数
- 返回 this,实现链式编程
 
- 遍历 
| 1 | off: function(type, callback) { | 
click 方法
- 功能: 给 itcast对象上的所有的dom元素绑定单击事件处理函数的
- 语法: itcast对象.click(callback);
- 实现思路- 遍历 this上的所有dom元素
- 调用 addEventListener分别传值即可
- return this实现链式编程
 
- 遍历 
| 1 | click: function(callback, capture) { | 
快捷绑定事件方法
| 1 | itcast.each(['click', 'dblclick', 'keypress', 'keyup', 'keydown', 'mouseover', 'mouseout', |