Javascript JS(或mootools,如果首选)鼠标是否退出到另一个元素?

Javascript JS(或mootools,如果首选)鼠标是否退出到另一个元素?,javascript,mootools,onmouseover,onmouseout,Javascript,Mootools,Onmouseover,Onmouseout,好吧,我遇到了一个奇怪的情况,我已经遇到很多次了。我在寻找一个简单/最好的解决方案,而不是我以前使用过的过于复杂的解决方案(后来被遗忘了) 你看,我有一个幻灯片。我还有几个按钮浮动在幻灯片放映的顶部(此处可见:) 现在,当用户的鼠标滑过幻灯片时,我会显示这些按钮。然而,当用户的鼠标移动到按钮上时,就会调用mouseleave(尽管从技术上讲,鼠标仍然在幻灯片上!)。这会导致按钮在鼠标经过时消失,这显然不是我希望发生的事情 我解决了这个问题,让每个按钮在收到鼠标悬停时重新显示自己 但是现在,我们有

好吧,我遇到了一个奇怪的情况,我已经遇到很多次了。我在寻找一个简单/最好的解决方案,而不是我以前使用过的过于复杂的解决方案(后来被遗忘了)

你看,我有一个幻灯片。我还有几个按钮浮动在幻灯片放映的顶部(此处可见:)

现在,当用户的鼠标滑过幻灯片时,我会显示这些按钮。然而,当用户的鼠标移动到按钮上时,就会调用mouseleave(尽管从技术上讲,鼠标仍然在幻灯片上!)。这会导致按钮在鼠标经过时消失,这显然不是我希望发生的事情

我解决了这个问题,让每个按钮在收到鼠标悬停时重新显示自己

但是现在,我们有一个问题

按钮位于幻灯片的最边缘。这意味着当调用mouseleave时,发生了两件事之一:

答:鼠标离开了按钮,但没有离开幻灯片,而mouseEnter在幻灯片上被调用,这意味着不应该采取任何行动,因为幻灯片最终会将按钮隐藏在其鼠标槽中

B:鼠标只留下了幻灯片和按钮,这意味着我们应该隐藏按钮

所以我的问题是,我如何区分这两种可能性?是的,是的,一个解决方案是总是让按钮隐藏自己——并依靠幻灯片重新显示按钮。。。但我担心在某些浏览器上,在鼠标离开按钮之前会调用鼠标中心的幻灯片放映!正如您可能知道的那样,这可能会导致问题。事实上,考虑到这一点,我已经很容易受到影响。例如,如果鼠标从幻灯片转到按钮,并且在onmouseleave之后调用用于我的幻灯片的onmouseleave,导致按钮仍然消失

长话短说,我需要知道以下两件事之一:

  • 这些事件的调用顺序是否有保证
  • 或者,当鼠标被调用时,有没有一种方法可以告诉鼠标实际去了哪里
正如您在上面的示例中所看到的,我使用的是mootools,所以mootools解决方案很好。不过,看到一个普通的js解决方案也会很有趣

编辑: 我的按钮是浮动的,位于单独的z索引上,因此父子DOM关系的标准操作不会在标准DOM事件中发生

至于顺序,它从最深的元素向上到文档根

当顺序颠倒时,还有一个可选的(请参见下面代码中的
false
参数)捕获阶段。从根到光标下的每个内部元素(用于鼠标事件)

要检查事件实际发生在原始元素的哪个内部元素上,可以检查事件对象的
target
属性:

el.addEventListener('mouseout', function (e) {
    var target = e.target;
    if (target.classList.contains('whatever')) {
        // Do something
    }
}, false);

根据Georges Oates Larsen的评论,还有一个专门为涉及多个元素的事件设计的按钮。

我认为我的问题可能是我的按钮(一个img元素)是浮动的,在一个单独的z索引上——实际上不是“在”幻灯片中(这只是一个带有一些奇特滚动的div)谢谢你让我知道订单的情况。我肯定有这个问题,所以你知道它的解决方案吗?啊,这很好,非常感谢+回答这两个问题的答案是:)@GeorgesOatesLarsen,我明白了。你的案子是这样的:。没有办法“通过”这件事。它总是会闪烁,除非你用一个普通的容器。无论如何,不客气!噢!我找到了!我一直想要相关的目标!:)Grr google没有给我任何结果,我不得不手动使用反射打印出事件变量的所有“属性”(我称它们为正确的东西吗?)mouseleave:function(e){alert(e.relatedTarget.get(“class”);}工作得很好:)我会接受你的答案,但也许你应该向其中添加relatedTarget:)@乔治索特斯拉森补充道。我自己从未认识和使用过
relatedTarget
,所以学习起来非常有趣,谢谢!