JavaScript - 事件2

事件目标

当事件触发的时候,那个 准确触发事件的元素
当给一个元素绑定事件以后:
在该元素身上触发行为,是可以触发事件处理函数的
在该元素的后代元素身上触发行为,也是可以触发事件处理函数的

获取事件目标:
标准浏览器:事件对象,target
IE 低版本:事件对象.sreElement
注意:mouseenter 和 mouseleave

事件传播

概念:当用户在浏览器内触发指定行为的时候,会按照元素的 结构父级 向上传递该事件行为
从事件目标开始,传递到window为止
事件目标 > body > html > document > window

事件传播机制

在事件传播的过程中, 任何浏览器都只能在一个阶段触发事件
在 IE 低版本内, 只能在冒泡阶段触发事件, 不能在捕获阶段触发事件
在其他所有浏览器内, 默认在冒泡阶段触发事件, 保留了在捕获阶段触发事件的能力

在标准浏览器下, 如何进行事件捕获阶段触发的行为
DOM 0级 事件, 是没有办法的
只有 addEventListener 是可以可以修改触发阶段的
第三个参数表示 冒泡阶段触发 还是 捕获阶段触发
默认值: false, 表示 冒泡阶段触发
选填值: true, 表示 捕获阶段触发

阻止事件传播
  • 标准浏览器
    事件对象.stopPropagation()
  • IE 低版本
    事件对象.cancelBubble = true
事件委托
  • 循环绑定事件
    缺点:
    给太多的元素绑定了事件, DOM 性能的浪费
    对于动态操作的元素不太友好

  • 事件委托
    优点:
    只给一个元素绑定了一次事件
    对于动态操作的元素友好
    核心:
    a元素的事件, 绑定给 a 元素的结构父级
    在结构父级的事件内, 通过 事件目标 判断你确实触发的是 a元素

this 和 e.target
如果你用的是循环绑定事件, this 表示当前这个元素
如果你用的是事件委托, e.target 表示当前这个元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值