在 div 上更改鼠标指针位置时出现多个 mouseover-mouseout 事件

multiple mouseover-mouseout event when changing mouse pointer position on a div

我在我的网络项目中进行了故障排除。我有一个 html 代码。如下所示:

<div id="my-div">
        <ul>
            <li>aaaaaaaa</li>
            <li>bbbbbbbb</li>
            <li>cccccccc</li>
            <li>dddddddd</li>
        </ul>
    </div>

但是当我在 div 中更改鼠标位置时,鼠标悬停功能会多次工作。我准备了一个 jsfiddle 示例来解释我的问题。 link 如下。

http://jsfiddle.net/r7zhL0qa/2/

请帮我解决这个问题。非常感谢您的回复。

发生此错误是因为您正在使用 "mouseover" 和 "mouseout"。这些事件不仅会为您附加的元素触发,还会为其子元素触发。因此,每当您移入和移出列表中的任何 LI 时,您都会看到事件触发。

您想要用作 "mouseenter" 和 "mouseleave" 的事件,它们只会对 "my-div" 而不是其子项触发。这是使用这些事件修改后的代码段版本。

var myDiv = document.getElementById('my-div'),
    counter = document.getElementById('counter');

myDiv.addEventListener("mouseenter", function () {
    counter.innerHTML += 'in <br>';
});

myDiv.addEventListener("mouseleave", function () {
    counter.innerHTML += 'out <br>';
});
<div id="my-div">
    <ul>
        <li>aaaaaaaa</li>
        <li>bbbbbbbb</li>
        <li>cccccccc</li>
        <li>dddddddd</li>
    </ul>
</div>
<div id="counter" style="height: 500px"></div>

(jsfiddle of the exact same code)