使用事件委托监听和使用for循环添加监听的比较

事件委托:利用事件流的特征解决一些开发需求的知识技巧

比如给多个子级添加监听事件的时候,需要for遍历完成,利用事件委托就可以直接给父级添加监听(可以提高性能,利用事件冒泡的特点,给父元素添加事件,子元素可以触发),但是不知道是哪个子级被点击了可以获取事件对象(e.target)获取别点击的子级然后进行相应的操作。

事件委托添加监听和使用for循环添加事件监听的比较:

使用for循环添加监听事件:

像这样我们一个一个删除,循环会降低浏览器执行效率,直接给tbody加委托事件能更好的实现

for (let i = 0; i < arr.length; i++) {

document.querySelectorAll('#del')[i].addEventListener('click'function() {

tbody.innerHTML = ''

arr.splice(i, 1)

rander()

alert('我要删除了')

})

}

给标签添加一个可变的id属性:id="${i}这样我们删除数组的时候就可以根据这个id来删除对应的数组,给父级添加委托事件的时候需要注意,添加之后是给所有的子级都添加了监听,显然是不满足要求的,所以我们可以使用事件对象找到子级标签的方式判断我们点击的那个是不是我们想要的标签,是的话我们找到这个可变的id属性删除对应的数组元素,重排新的数组!!!!!跟上面for循环遍历一个一个添加监听事件要快很多且代码更优雅

tbody.addEventListener('click'function(e) {  

    if (e.target.tagName === 'A') {  

        arr.splice(e.target.id, 1)  

        render()  

    }  

})  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

益智竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值