美文网首页
事件委托

事件委托

作者: 成长储存罐 | 来源:发表于2019-08-26 14:38 被阅读0次

    //事件委托:

        //将原本加给多个子元素的相同事件,加给共同的父元素,利用事件冒泡的原理,配合事件源,实现原本要给子元素添加事件的过程中,叫事件委托

        //事件委托的特点:

        //1.提高性能

        //2.可以给页面上暂时 不存在的元素绑定事件

    <body>

        <ul>

            <li class="l">link1</li>

            <li>link2</li>

            <li class="l">link3</li>

            <li>link4</li>

            <li class="l">link5</li>

            <li>link6</li>

            <p>p1</p>

            <p class="l">p2</p>

            <p>p3</p>

            <p class="l">p4</p>

        </ul>

    </body>

    <script>

        var oul = document.querySelector("ul");

        var achild = document.querySelectorAll(".l")

        oul.onclick = EveEnt(achild,function(){

            console.log(this)

        })

        //立即执行的为了传参的函数

        function EveEnt(child,callback){

            //return的函数是真正的时间处理函数

            return function(eve){

                //在真正的事件处理函数中才有事件对象

                var e = eve || window.event;

                var target = e.target || e.srcElement;

                //并且可以拿到外层函数的参数

                for(var i=0;i<child.length;i++){

                    //遍历参数的值,与事件源判断相等

                    if(child[i] == target){

                        //执行用户传进来的回调函数,同时改变回调函数的this指向,为事件源

                        callback.bind(target)()

                    }

                }

            }

        }

    </script>

    相关文章

      网友评论

          本文标题:事件委托

          本文链接:https://www.haomeiwen.com/subject/mznrectx.html