# 事件对象
- event 就是一个事件对象,写道我们侦听函数的小括号里面,当形参看
- 事件对象只有有了事件才会存在,它是系统给我们自动创建的,不需要我们传递参数
- 事件对象是事件一系列相关数据的集合,跟事件相关的 比如鼠标点击就包含了鼠标坐标等信息
- 事件对象可以自己命名,比如 event, evt, e
- 事件对象也有兼容性问题,IE678 通过 window.event 兼容性的写法 : e = e || window.event
# 事件对象的常见属性和方法
| 事件对象属性方法 | 说明 |
|---|---|
| e.target | 返回触发事件的对象 标准 |
| e.srcElement | 返回触发事件的对象 非标准 IE678 使用 |
| e.type | 返回事件的类型,比如 click mouseover 不带 on |
| e.cancelBubble | 该属性阻止冒泡 非标准 IE678 使用 |
| e.returnValue | 该属性组织默认事件 (默认行为) 非标准 IE678 使用,比如不让链接跳转 |
| e.preventDefault() | 该方法组织默认事件 (默认行为) 标准 比如不让链接跳转 |
| e.stopPropagation | 组织冒泡 标准 |
- e.target 返回的是触发事件的对象 (元素), this 返回的是绑定事件的对象 (元素)
- e.currentTarget 和 this 指向一致,都是返回绑定事件的对象
# 阻止冒泡的两种方式
- 标准写法 : e.stopPropagation () 方法
- 非标准写法 : e.cancelBubble = true;
# 事件委托
事件冒泡本身的属性,会带来坏处,也会带来好处
例:对于 li 的绑定事件,可以在 ul 上设置,然后利用其冒泡阶段,使用 e.target 来处理,就可以避免在每个 li 中都设置事件了
1 | var ul = document.querySelector('ul'); |
