Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么jQuery mouseenter事件以未指定的顺序触发?_Javascript_Jquery_Events_Event Handling_Mouseenter - Fatal编程技术网

Javascript 为什么jQuery mouseenter事件以未指定的顺序触发?

Javascript 为什么jQuery mouseenter事件以未指定的顺序触发?,javascript,jquery,events,event-handling,mouseenter,Javascript,Jquery,Events,Event Handling,Mouseenter,我有3个div,它们像一个 对于所有div,我有一个绑定mousenter事件的函数。现在从底部缓慢移动鼠标,进入第三层将导致以下事件: 第一层鼠标 第二层鼠标 第三层鼠标 这是完美的,也是预期的结果,因为你需要先进入第一层,才能进入第二层,等等 但是,如果我对快速鼠标移动执行相同操作,则顺序将不明确,例如: 第二层鼠标 第一层鼠标 第三层鼠标 这对我来说没有太多意义-你的鼠标如何在进入第一层之前进入第二层 无论如何,问题是:有没有办法强迫jQuery或javascript按照其自然顺序触发这

我有3个div,它们像一个

对于所有div,我有一个绑定mousenter事件的函数。现在从底部缓慢移动鼠标,进入第三层将导致以下事件:

  • 第一层鼠标
  • 第二层鼠标
  • 第三层鼠标
  • 这是完美的,也是预期的结果,因为你需要先进入第一层,才能进入第二层,等等

    但是,如果我对快速鼠标移动执行相同操作,则顺序将不明确,例如:

  • 第二层鼠标
  • 第一层鼠标
  • 第三层鼠标
  • 这对我来说没有太多意义-你的鼠标如何在进入第一层之前进入第二层

    无论如何,问题是:有没有办法强迫jQuery或javascript按照其自然顺序触发这些事件?如果没有,您能否建议我一种解决方法,比如从我的事件处理函数中对事件进行后期排序,并推迟那些过早调用的事件

    测试代码发布在

    上。问题是:

    在任何情况下,您都不能将鼠标直接移到第三层,因为它位于第二层内,而第二层位于第一层内。第二层和第一层有可见部分。

    无论你移动鼠标的速度有多快,它仍然会在第三次之前触发第一次或第二次。对此没有明显的解决方案,可见的第二层和第一层鼠标悬停的部分总是在第三层之前触发第二层和第一层鼠标悬停。如果您移动得很快,此顺序可以更改,但不能保持一致。

    问题是:

    在任何情况下,您都不能将鼠标直接移到第三层,因为它位于第二层内,而第二层位于第一层内。第二层和第一层有可见部分。


    无论你移动鼠标的速度有多快,它仍然会在第三次之前触发第一次或第二次。对此没有明显的解决方案,可见的第二层和第一层鼠标悬停的部分总是在第三层之前触发第二层和第一层鼠标悬停。如果你移动得很快,这个顺序可以改变,但不能保持一致。

    我在Jsbin中编辑了你的代码,对触发的事件进行后期排序。我不确定它对您的案例是否有用,但下面是代码

    我在Jsbin中编辑了您的代码,以对触发的事件进行后期排序。我不确定它对您的情况是否有用,但下面是代码

    通常mouseenter和mouseleave事件都是基于microsoft的事件,jquery使它们可以在所有浏览器中使用其他函数来创建此效果。。。首先进行一次loook测试,并在中测试演示。我没有检查jquery源代码,但据我所知,javascript中有两种不同的事件排序机制。。。事件捕获和事件冒泡

    这不是新的,但它描述了您需要的基本知识。关于鼠标事件及其执行方式


    所以,检查jquery源代码,看看mouseenter和mouseleave是如何工作的。正如我之前所说,它不是只在IE上运行的基本函数,而是一个模拟,通过使用其他javascript函数,它的行为就像mouseenter和mouseleave事件一样。。。这就是jquery如何使这两个Microsoft事件对所有浏览器都可用…

    通常mouseenter和mouseleave事件是基于Microsoft的事件,jquery使用其他函数使它们在所有浏览器中都可用以创建此效果。。。首先进行一次loook测试,并在中测试演示。我没有检查jquery源代码,但据我所知,javascript中有两种不同的事件排序机制。。。事件捕获和事件冒泡

    这不是新的,但它描述了您需要的基本知识。关于鼠标事件及其执行方式


    所以,检查jquery源代码,看看mouseenter和mouseleave是如何工作的。正如我之前所说,它不是只在IE上运行的基本函数,而是一个模拟,通过使用其他javascript函数,它的行为就像mouseenter和mouseleave事件一样。。。这就是jquery如何使这两个Microsoft事件对所有浏览器都可用…

    我想您可能误解了我的问题。我的问题不是这三件事都会被炒鱿鱼。这是预期的行为,也是一件好事。我的问题是,如果鼠标移动足够快,这些事件的顺序就会混淆。我需要一致的顺序,如何实现?我想你可能误解了我的问题。我的问题不是这三件事都会被炒鱿鱼。这是预期的行为,也是一件好事。我的问题是,如果鼠标移动足够快,这些事件的顺序就会混淆。我需要一致的顺序,如何做到这一点?好奇-在一台中等规格的PC上使用最新的Firefox和Chrome(按照今天的标准),无论我移动鼠标有多快,我都无法复制您的结果。@Alnitak:我在Core2Duo Vista笔记本上使用FF 3.6.16。我可以随时复制这种行为。尝试在堆叠的div中添加更多层和更小的填充物。你能复制它吗?@Alnitak:有更小的填充物和5层。请测试一下。我认为这是泡沫问题,是吗?好奇-在普通规格的PC上使用最新的Firefox和Chrome(按照今天的标准),无论我移动鼠标有多快,我都无法复制你的结果。@Alnitak:我在Core2Duo Vista笔记本上使用FF 3.6.16。我可以随时复制这种行为。尝试在堆叠的div中添加更多层和更小的填充物。你能复制它吗?@Alnitak:有更小的填充物和5层。请测试一下。我认为这是泡沫问题,是吗?科克:这很酷,但你依赖于部门的ID进行排序。我使用这些特定的ID只是为了演示,这是我所面临的现实世界情况的一个非常简单的例子。我需要的是a)根据dom层次结构对事件进行排序,b)以某种方式对事件进行分组(如果事件仅在增量时间范围内发生,则事件才属于一起),我猜