JavaScript中的事件委托

事件的委托是指利用冒泡的原理,把事件加到父级上,触发执行效果。

使用事件的委托优点是优化代码的性能。

案例

首先看不使用事件委托时的代码,

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        li {
            list-style: none;
            width: 200px;
            line-height: 35px;
            border: 1px solid black;
            margin: 2px 0;
            text-align: center;
        }
    </style>
</head>
<body>
<ul class="menu">
    <li class="lilist">菜单1</li>
    <li class="lilist">菜单2</li>
    <li class="lilist">菜单3</li>
    <li class="lilist">菜单4</li>
    <li class="lilist">菜单5</li>
    <li class="lilist">菜单6</li>
    <li class="lilist">菜单7</li>
    <li class="lilist">菜单8</li>
</ul>
<script>
   var lilist=document.getElementsByClassName("lilist");
    for(var i=0;i<lilist.length;i++){
        lilist[i].onclick=function(){
            this.style.backgroundColor="red";
        }
    }
</script>
</body>
</html>

 代码运行情况如图

使用事件委托时,

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        li {
            list-style: none;
            width: 200px;
            line-height: 35px;
            border: 1px solid black;
            margin: 2px 0;
            text-align: center;
        }
    </style>
</head>
<body>
<ul class="menu">
    <li class="lilist">菜单1</li>
    <li class="lilist">菜单2</li>
    <li class="lilist">菜单3</li>
    <li class="lilist">菜单4</li>
    <li class="lilist">菜单5</li>
    <li class="lilist">菜单6</li>
    <li class="lilist">菜单7</li>
    <li class="lilist">菜单8</li>
</ul>
<script>
    var menu = document.getElementsByClassName("menu");
    menu[0].onclick = function (event) {
        var target = event.target;
        if (target.nodeName.toLowerCase() == "li") {
            target.style.backgroundColor = "red";
        }
    }
</script>
</body>
</html>

代码运行情况如图

通过比较,我们可以看出事件委托优化了代码性能,代码运行时间缩短。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值