原生js javascript 给动态添加的元素绑定事件

原生js 给动态添加的元素绑定事件的可能应用场景:在创建一个元素之后,需要给它绑定事件,这时候要用到事件委托。jQuery现在很少用了,就不说了,现在来说一下原生js的写法:

let tag = `<div class="newsBox">
    <p class="newsList">Title: <span class="newsUrl" id="newsUrl">${newsTitle}</span></p>
</div>`;
let newsContainer =  document.createElement('div');
newsContainer.innerHTML = tag;
// 此时,如果想获取 #newsUrl 并给它绑定事件,一般写法:
 let newsUrl = document.getElementById('newsUrl');
 newsUrl.addEventListener('click',function(e){
     console.log(e.target);
     // do something
 })

这里写图片描述

但是如果你用的框架(比如 polymer等)导致 项目加载完之后你的这些代码就已经运行了,项目就会报错,这个时候 newsUrl 为 null,解决办法:

let tag = `<div class="newsBox">
    <p class="newsList">Title: <span class="newsUrl" id="newsUrl">${newsTitle}</span></p>
</div>`;
let newsContainer =  document.createElement('div');
newsContainer.innerHTML = tag;
 let newsUrl = newsContainer.querySelector('#newsUrl');
 // 或者 如果有多个元素
 let newsUrl = newsContainer.querySelector('.newsUrl');
 newsUrl.addEventListener('click',function(e){
    console.log(e.target);
    // do something
})

这里写图片描述

PS: 注意区分 querySelector 和 getElementById

希望本文能对您有所帮助

个人微信公众号:侦探小禾子,闲聊育儿生活星座塔罗牌,野生法考通过者免费法律咨询,欢迎关注!

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值