猛跑小豬
2018-08-18 14:42:17
在table上綁定了一個(gè)mouseover事件,目的是打算移動到哪一行就拿到哪一行的數(shù)據(jù).但是發(fā)現(xiàn)不管是把事件設(shè)置在捕獲階段還是冒泡階段,只能拿到td拿不到tr這是怎么回事大佬求幫助TABLE.addEventListener('mouseover', (e)=>{ console.log(e.target.tagName);
if(e.target.tagName === 'TR') { console.log(e.target); //始終不會執(zhí)行
}
},false)
2 回答

米琪卡哇伊
TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
tr標(biāo)簽被td完全遮蓋住,所以mouseover根本不會降臨到tr上,都是在td上直接觸發(fā)。
實(shí)驗(yàn)中會發(fā)現(xiàn)先觸發(fā)是table,因?yàn)閠able默認(rèn)有邊框或單元格空隙,鼠標(biāo)從外部進(jìn)入table晃過時(shí)先經(jīng)過table的邊框或單元格空隙, 可以通過把table的border和cellspacing設(shè)置為0驗(yàn)證,table將不會被mouseover。

月關(guān)寶盒
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
時(shí)間冒泡并不是所有節(jié)點(diǎn)都觸發(fā)一次,而是從最下層的節(jié)點(diǎn),逐級向上傳遞。所以你這樣是無法捕捉到 <tr>
觸發(fā)的事件的,因?yàn)樗皇亲钕聦?,它下面還有 <td>
。
我不知道你要干嘛,我想象不到為啥要只捕獲 <tr>
。
添加回答
舉報(bào)
0/150
提交
取消