js为一个元素绑定事件,那么这个元素就永远拥有这个事件吗

js为一个元素绑定事件,那么这个元素就永远拥有这个事件吗?
可能大家看到这个题目觉得怪怪的,我也是。因为我题目太短,不好表达意思。我i就用代码演示下。这个问题之前一直没注意过,还是在一个同学那边发现的,涨知识le。


<div>
  <li>li1</li>
  <li>li2</li>
  <li>li3</li>
</div>
<ul>

</ul>
<script>
 var li=document.querySelectorAll('div li');//获取div里面的li元素
  //遍历所有li,为他们绑定点击事件
  li.forEach(function (el){
      el.addEventListener('click',function (e){
         e.target.style.color='red';
          alert('我被点击了');
      })
  })
  var ul=document.querySelector('ul');
  ul.appendChild(li[2]); //把li[2]添加到ul里面
  var ulLi=document.querySelector('ul li');
  ulLi.οnclick=function (){
      alert('我是ul中的li');
  }

此时我们点击li[2],也就是li3。页面会先弹出“我被点击了”,然后又弹出“我是ul中的li”。
此时你或许会疑惑,我们点击的是ul中的li,应该触发第二个方法,怎么会触发div中的li的点击事件呢。
当时我也很疑惑,经过一个大佬的指点,才略懂一二。
我们为一个元素绑定事件,就像为一个对象定义一个私有属性一样,他会永远带着这个事件,只要达到条件就会触发事件。
当然如果我们不想触发这种效果,我们就可以使用事件解绑的方法取消我们不想要的效果,就像我们取消一些不想要的默认事件一样。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值