js动态添加元素,元素绑定事件不起效问题解决

最近写一个前端点击事件改变左侧列表ul标签

一开始我使用innerHTML 方法滞空ul标签,再用innerHTML 方法进行添加
改完之后发现点击ul标签没有拉开li标签列表
我以为是innerHTML 方法的问题后来改变了创建元素的方法

在这里插入图片描述使用document.createElement方法进行创建元素
此方法照样不起效
后来经过我两天时间的排查
发现滞空之前的前端a标签上面有onclick事件
新创建的a标签并没有触发此事件
在这里插入图片描述简单点说就是你动态添加的元素并不触发之前定义事件

解决办法

将子元素的事件委托给父元素
改变之后的代码在这里插入图片描述我自己的理解是初始化页面js绑定的事件是你滞空之前的a标签,但是你清除了这个标签
之后你动态添加同样的元素,但是js并不认同
委托父元素我感觉就像是事件放在父元素,你动态添加元素也不影响父元素,js绑定的事件就还在,这种委托给我的感觉就是,事件是从父元素开始查,查父元素下面的a标签然后触发。

一个简单的前端问题搞了我两天,心态爆炸,写文章用来记载收藏

一个后端程序员写前端的苦恼

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值