【发布时间】:2017-01-19 15:16:33
【问题描述】:
我的 HTML 看起来像这样:
<div id="parent">
<div class="child">
Child 1
</div>
<div class="child">
Child 2
</div>
<div class="child">
Child 3
</div>
</div>
我像这样附加 mouseenter 和 mouseout 事件:
$("*").on("mouseenter", function() {
$(this).addClass("mouse_over");
});
$("*").on("mouseout", function() {
$(this).removeClass("mouse_over");
});
现在,想象以下鼠标事件序列:
- 我将鼠标移到父 div 中。正如预期的那样,mouseenter 事件触发,并且 mouse_over 类被放在父级上。
- 我搬进了其中一个孩子。 mouseout 事件为父级触发,而 mouseenter 事件为子级触发。很好。
- 我将鼠标移回父级。 mouseenter 不会在这里触发。
第三步是这里的问题。当从子元素重新进入父级时,我希望将 mouse_over 类放回父级。
我想我明白为什么会发生这种情况,因为从技术上讲,我的鼠标一直在父级中,所以触发 mouseenter 事件没有意义。
这是一个更好地说明我正在尝试做的事情的小提琴:
https://jsfiddle.net/tg1wg1xx/
如果您将鼠标悬停在父元素和子元素中,您会在离开时注意到图案叠加层并未放置在父元素上。
那么如何确保叠加层始终放置在我当前悬停的任何元素上?
【问题讨论】:
-
这就是你想要的吗? jsfiddle.net/tg1wg1xx/7
-
@Karl-AndréGagnon 是的,这正是我想要的!发布答案,我会接受。
标签: javascript jquery html events dom-events