事件冒泡和事件捕获

事件冒泡

其实事件冒泡的原理很简单:
当一个节点触发了一个事件,它会先执行它自身的事件处理程序(event handler),然后再执行其父节点上的事件处理程序(event handler),然后依次向上。。。直到document对象。

举例:

<div onclick="alert('冒泡到了div')">
    <p onclick="alert('冒泡到了p')">
        <span onclick="alert('冒泡到了span')">这是span内的内容</span>
    </p>
</div>
//当点击<span>内的内容时,会依次执行<span><p><div>节点的事件处理程序。
//即依次执行alert("冒泡到了span")
//alert("冒泡到了p")
//alert("冒泡到了div")

这个过程叫做冒泡,因为事件就像气泡从水底向上浮一样,从触发节点一直在向上层节点移动。

要注意的是,绝大部分的事件会冒泡,少部分的事件不会冒泡如:focus事件,页面的load事件等等

这里写图片描述

事件捕获

另一个事件处理的阶段叫做捕获,它在代码中很少使用(通常对外界不可见),但是有时很有用。
W3C规定的处理事件的三个过程:

  1. capture阶段,事件对象由window向下捕捉到触发节点的父节点
  2. target阶段,事件到达目标节点
  3. bubble阶段,事件从目标节点向上冒泡

下面是一个table元素中的td元素的onclick事件的处理过程。

这里写图片描述

当在td节点点击时,事件由window向下捕捉到td节点的父tr节点,然后到达目标节点,接着向上冒泡,依次执行沿途上的事件处理程序。

原文地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值