原生js底层基础(二十一) 事件委托

事件委托

利用事件冒泡,和事件源对象进行处理

优点:
1.性能好,不需要循环所有的元素一个个绑定事件,只需添加一个事件处理程序代理所有事件,所占用的内存空间更少。
2.灵活,当有新的子元素不需要重新绑定事件,使用事件委托可以自动绑定动态添加的元素,新增的节点不需要主动添加也可以一样具有和其他元素一样的事件。

面试题
有1个ul,里面有十个li,要求点击每个li输出对应的顺序

解法1:遍历子元素

1.var ulList = document.getElementsByTagName("ul")[0];
2.    var liList = document.getElementsByTagName("li");
3.
3.    for(var i = 0; i<liList.length; i ++){
4.        (function(n){
5.            liList[n].addEventListener("click",function(){
6.            console.log(n);
7.            },false)
8.        }(i))
9.    }

解法2:事件委托(最佳)
利用事件冒泡机制,可扩展性好

1.var ulList = document.getElementsByTagName("ul")[0];
2.
3.ulList.onclick = function(e){
4.        var event = e || window.e;
5.        var target = e.target || e.srcElement;
6.        console.log(target.innerText);
7.    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值