javascript - js 事件委托只能委托到直接父级上吗?

查看:217
本文介绍了javascript - js 事件委托只能委托到直接父级上吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

比如有如下三级结构

 <div class='box'>
     <div class='a'>
         <div class='b'>
     
         </div>
     </div>
 </div>
 
 <script>
 var box=document.querySelector(.box);
 
 box.addEventListener("click",clk);
 
 function clk(e){
     //想获得a结构
     var isA=e.target.class.contains("a");
     console.log(e.target)//实际总是b
 }
 </script>

实际上输出的目标总是b,这是为什么?有什么办法获取a?

解决方案

在正常文档流中,如果A和B是重合的(A的宽高是B撑开的;或者A指定了宽高,B的宽高设置了100%)
那么你点击的时候获取到的e.target会是B。

这个跟浏览器DOM结构相关。

要获取到A:

1.可以给A绑定事件监听,然后用e.currentTarget去获取A

2.给B的css添加pointer-events:none;屏蔽B的鼠标事件,然后e.target就会是A了。

这篇关于javascript - js 事件委托只能委托到直接父级上吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆