在以下代碼中:
<div onClick={() => console.log('outer div')}>
<div onClick={() => console.log('middle div')}>
<div onClick={() => console.log('innermost div')}>
Click me!
</div>
</div>
</div>
我了解事件物件擁有一個target
屬性,該屬性包含對發生事件的 DOM 節點的參考。我的問題是:在捕獲(當捕獲設定為 true)和冒泡階段,如果該元素包含啟動傳播周期的相同 HTML 屬性(例如 onClick、onHover),該事件是否總是在 HTML 元素上觸發?謝謝。
uj5u.com熱心網友回復:
是的。
如果該元素包含相同的 HTML 屬性,則該事件總是在 HTML 元素上觸發。
在下面的代碼中,您可以看到事件的哪個階段在特定節點上觸發。
Event.eventPhase
介面指示當前正在評估事件流的哪個階段。
0:無,1:捕獲,2:目標,3:冒泡
// true: capturing / false: bubbling
const useCature = true;
const phase = (e) => {
const phases = ["capturing", "target", "bubbling"];
const node = `${e.currentTarget.nodeName} .${e.currentTarget.className}`;
console.log(node, phases[e.eventPhase - 1]);
};
document.querySelector(".outer").addEventListener("click", phase, useCature);
document.querySelector(".middle").addEventListener("click", phase, useCature);
document.querySelector(".inner").addEventListener("click", phase, useCature);
<div class="outer">
<div class="middle">
<div class="inner">
Click me!
</div>
</div>
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/469227.html
標籤:javascript html dom