[英]MouseLeave behaving like MouseOut?
我覺得我快瘋了......所以,根據我的理解和互聯網的普遍共識, mouseout
會觸發光標離開元素或其任何子元素,而mouseleave
只會觸發離開元素的光標事件附加到。 所以我把一些像這樣的准系統:
<html>
<body>
<div id='test'>
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
</ul>
</div>
<script>
const div = document.getElementById('test');
div.addEventListener('mouseleave', (e) => console.log('out'), true);
</script>
</body>
</html>
...當鼠標離開該 div 的任何后代時, mouseleave
事件肯定仍在觸發。 我覺得我一定是在做一些明顯錯誤的事情,但是……什么?
嘗試從您的addEventListener
刪除最后一個參數 - 它被稱為useCapture
,默認情況下為false
。 如果傳遞true
,則將在捕獲階段觸發 when 事件,這將導致在每個子元素上觸發mouseleave
。 閱讀有關useCapture
參數的更多信息 - https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
mouseleave
事件不會冒泡,因為它在離開子元素時不會觸發父事件。 但是當您通過useCapture
- 您會強制在捕獲階段觸發事件。 MDN 上的事件階段 - https://developer.mozilla.org/ru/docs/Web/API/Event/eventPhase
const div = document.getElementById('test'); div.addEventListener('mouseleave', (e) => console.log('out')); // Remove `true`
<html> <body> <div id='test'> <ul> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> </ul> </div> </body> </html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.