事件委派的理解

事件的委派event.target,可以用来对事件进行委派,对于多重复节点的同种事件绑定很有用,可以获取到触发事件的节点。

委派的依据

委派的依据是什么,为什么可以获取到触发的节点,我尝试测试了一下,发现如果给触发的节点添加禁止冒泡就会发现target无法指向触发节点,所以target指向的依据可能就是寻找事件冒泡的触发节点,然后指向他,所以委派无法添加在onmouseenter和onmouseleave中的原因

笔记代码如下

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>


<body>
    <ul>
        <li>
            <ul class="ul">
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </li>
        <li>这是第02</li>
        <li>这是第03</li>
        <li>这是第04</li>
        <li>这是第05</li>
        <li>这是第06</li>
    </ul>
    <script>
        /*
            在大批量节点绑定同一个函数或者需要使用动态添加的时候使用事件委派就可以极大的简化代码
            //e.target获取到的是第一个触发函数的节点,获取方法是根据冒泡
        */  // 使用e.currentTarget就只会获取到绑定了事件的节点不会获取到子节点

        //**********猜想,使用这个方法对于事件的捕获会不会有新的反应,比如点击父元素,子元素的target会获取到父元素
        var lis = document.querySelectorAll("li")
        var ul = document.querySelector("ul")
        var ulon = document.querySelector(".ul")

        // 给li都添加log使得点击可视化
        lis.forEach(function (item, index) {
            item.onclick = function () {
                console.log(index);
            }
        });

        ul.onclick = function (e) {
            // e.target获取到的是触发改事件的节点,获取的依据就是事件的冒泡,
            // target会获取到冒泡的触发事件当作target指向的位置
            // console.log(e.target);
            //currentTarget获取的就会一直是绑定事件的节点,不需要判断,只要触发就会指向绑定
            console.log(e.currentTarget);
        }
        ulon.onclick = function (e) {
            console.log("ss");
            //使用阻止冒泡就会使target的获取无效
            e.stopPropagation()
        }

    </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值