JS事件委托

事件委托从字面意思上理解就是把事件委托给别人做。这样有什么好处呢?设想一下,一个ul里有很多li,现在要给每一个li都添加点击事件,就需要循环给li添加事件,这样性能会很差。这时候就可以使用事件委托解决。先了解下他的原理:利用事件冒泡,把子元素的事件添加到父元素上,触发事件执行。
需要注意的地方在下面的demo里都注释出来了。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <ul id="list">
        <li>点我</li>
        <p>点我没用</p>
        <li>点我</li>
        <p>点我也没用</p>
        <li>点我</li>
    </ul>
    <script>
        var oUl = document.getElementById("list");
        oUl.onclick = function(event){
            event = event || window.event;
            //获取事件源(需要考虑兼容,前者标准浏览器,后者IE)
            var target = event.target || event.srcElement;
            console.log(target.nodeName);
            //这里注意获取到的nodeName的值全为大写
            if (target.nodeName == "LI") {
                alert("hello");
            }
        };
        //使用事件委托写鼠标移入移出事件时不能使用onmouseenter和onmouseleave,
        //因为他俩不支持事件冒泡
        oUl.onmouseover = function(event){
            event = event || window.event;
            var target = event.target || event.srcElement;
            if (target.nodeName == "P") {
                target.style.background = "green";
            }
        };
        oUl.onmouseout = function(event){
            event = event || window.event;
            var target = event.target || event.srcElement;
            if (target.nodeName == "P") {
                target.style.background = "";
            }
        };
    </script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一直以来,对js的一些概念还是不清晰的,很多都没有搞明白,今天无意间在群里见他们提起事件委托,所以查找了一些资料,...
    蝴蝶结199007阅读 289评论 1 3
  • 前言 事件委托,也叫事件代理,是js事件中的一种常用技巧。事件委托的原理就是利用冒泡事件的机制,为一些节点的祖先节...
    zkhChris阅读 525评论 0 3
  • 本来打算介绍clipboard.js如何使用,却发现在https://clipboardjs.com介绍中事件委托...
    最爱是荔枝阅读 322评论 0 0
  • 定义:通俗的讲,事件就是onclick,onmouseover,onmouseout等就是事件,委托呢,就是让别人...
    JYOKETSU3阅读 344评论 0 0
  • 我们收取快递有两种方法:一是在特定的地点等快递的到来,二是委托人代收。现实当中,我们大都采用委托的方案。而委托人接...
    饥人谷_oathy阅读 781评论 0 2