为了账号安全,请及时绑定邮箱和手机立即绑定

Table上进行事件代理(委托)时,为什么捕获不到TR

Table上进行事件代理(委托)时,为什么捕获不到TR

猛跑小猪 2018-08-18 14:42:17
在table上绑定了一个mouseover事件,目的是打算移动到哪一行就拿到哪一行的数据.但是发现不管是把事件设置在捕获阶段还是冒泡阶段,只能拿到td拿不到tr这是怎么回事大佬求帮助TABLE.addEventListener('mouseover', (e)=>{  console.log(e.target.tagName);     if(e.target.tagName === 'TR') {    console.log(e.target);    //始终不会执行   } },false)
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

tr标签被td完全遮盖住,所以mouseover根本不会降临到tr上,都是在td上直接触发。
实验中会发现先触发是table,因为table默认有边框或单元格空隙,鼠标从外部进入table晃过时先经过table的边框或单元格空隙, 可以通过把table的border和cellspacing设置为0验证,table将不会被mouseover。

查看完整回答
反对 回复 2018-08-19
?
月关宝盒

TA贡献1772条经验 获得超5个赞

时间冒泡并不是所有节点都触发一次,而是从最下层的节点,逐级向上传递。所以你这样是无法捕捉到 <tr> 触发的事件的,因为它不是最下层,它下面还有 <td>

我不知道你要干嘛,我想象不到为啥要只捕获 <tr>


查看完整回答
反对 回复 2018-08-19
  • 2 回答
  • 0 关注
  • 887 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信