自学阶段四Webapis基础—Day4

52 阅读2分钟

一、事件对象

当事件触发的时候,就会产生个对象,记录和该事件有关的信息,对象就是事件对象
获取:在事件处理函数中添加个形参e

常用属性:

鼠标事件:
clientX,clientY:参照浏览器可见区域的左上角
offsetX,offsetY:参照元素左上角
键盘事件:
key:按下的键的名称
which:按下的键的键码 Enter:13 Esc:27

e.target:真正触发事件的对象

二、事件流

事件会经历两个阶段
1.捕获阶段
2.冒泡阶段

事件冒泡,从里到外
当一个元素的事件触发了,同样的事件会在该元素的所有祖先元素中依次来触发

事件捕获,从外到里

通过addEventListener第三个参数来决定是冒泡还是捕获
true 表示注册的事件是在捕获阶段来触发
false 默认值 表示注册的事件是在冒泡阶段来触发

鼠标移入移出事件
mouseenter mouseleave 推荐使用 不会冒泡

阻止事件传播
    可以阻止捕获也可以阻止冒泡
    e.stopPropagation()
 阻止默认行为
    e.preventDefault() 
    常见的默认行为
    1.a链接默认跳转
    2.表单提交
     

三、事件委托

表现形式:将事件绑定给已存在的父容器,每一个子元素都能触发

原理:是利用了事件冒泡的原理:子元素触发事件,也会将事件冒泡给父容器

优点:

  1. 简化代码
  2. 对已有元素和未来元素都有效

如何实现
把事件委托注册给父元素(祖先元素),父容器一定要已经存在 如何得知触发事件的具体元素是谁:
1.e.target
2.e.target.tagName 标签名

伴随前端生涯的两句话:

1. 页面中的元素操作本质上是数据操作 2. 页面操作的结果一定要体现到数据