怎么让事件源只能是父元素的子元素,而不是孙子元素?
给父元素parent添加一个点击事件后,当点击parent区域后,会得到事件源,然而父元素的子元素还有元素,并且还占满父元素。问题:当我点击parent区域时,怎么让事件源是子元素,而不是孙子元素。
<div class="parent">
<div class="chlid">
<div class="grandson"></div>
<div class="grandson"></div>
<div class="grandson"></div>
...
</div>
<div class="chlid">
<div class="grandson"></div>
<div class="grandson"></div>
<div class="grandson"></div>
...
</div>
<div class="chlid">
<div class="grandson"></div>
<div class="grandson"></div>
<div class="grandson"></div>
...
</div>
...
</div>
<script>
let parent = document.querySelector(".parent");
parent.addEventListener("click",function(e){
e = e || window.event;
let target = e.target;
// 怎么回回点击parent区域 等得到的事件源还是 div.child?
},false)
</script>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
事件永远发生在真实的位置上,点了里面的元素就是点了里面的元素。只不过你的事件监听实在父元素上。试想一下,如果在父元素绑定事件监听,不管点里面哪一个元素,都认为事件源是父元素,那怎么做事件代理。
用颜色标注一下:
点绿色的部分事件源就是grandson,红色部分就是child,蓝色部分就是parent