【Javascript】【事件】快速理解javascript中的事件处理机制

javascript中的事件处理机制其实很简单,这里以图文+代码,快速帮大家理解清楚

先来看一个简化的页面
白色部分为document,黄色部分为parent,橙色部分为child
在这里插入图片描述
这里以点击事件为例,介绍javascript的事件处理机制
如果我们点击了红色child区域,那么事件将会按照以下顺序传播
在这里插入图片描述
事件捕捉阶段:事件从上往下逐个传递
事件冒泡阶段:事件从下往上逐个传递,同时处理用户绑定的事件处理器
事件拦截:不管是事件捕捉,还是事件冒泡阶段,都可以通过event.e.stopPropagation()来停止传播
在捕捉阶段监听事件:elem.addEventListener(eventType,eventHandler,true)
在冒泡阶段监听事件:elem.addEventListener(eventType,eventHandler,false),false可以省略
设置事件处理器:elem.onevent = function(e)
虽然通过监听事件捕捉和冒泡也可以为元素添加事件处理器,但是onevent更加符合javascript事件机制的设计思想
一般需要拦截事件,修改的默认的事件传递方式时,才建议使用addEventListener

代码测试


    <script>
        $(() => {
            let parent = document.querySelector("#parent");
            let child = document.querySelector("#child");

            //事件捕捉,从上到下
            document.addEventListener("click", function (e) {
                console.log("document catch");
            }, true);
            parent.addEventListener("click", function (e) {
                console.log("parent catch");
            }, true);
            child.addEventListener("click", function (e) {
                console.log("child catch");
            }, true);

            //事件冒泡,从下到上
            child.addEventListener("click", function (e) {
                console.log("child bubble");
            }, false);
            parent.addEventListener("click", function (e) {
                console.log("parent bubble");
            }, false);
            document.addEventListener("click", function (e) {
                console.log("document bubble");
            }, false);

            //事件处理,从下到上
            child.onclick = function (e) {
                console.log("child onclick");
            };
            parent.onclick = function (e) {
                console.log("parent onclick");
            };
            document.onclick = function (e) {
                console.log("document onclick");
            };
        });
    </script>

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值