jQuery:hover(鼠标悬停在子对象上时激发mouseleave事件)

jQuery:hover(鼠标悬停在子对象上时激发mouseleave事件),jquery,hover,parent,Jquery,Hover,Parent,我想在一些拇指上创建缩放效果 以下是我的javascript简化代码: parent.hover( function(){ parent.stop().animate({/* css */}, inputZoomDuration, "linear"); wrapper.stop().animate({/* css */}, inputZoomDuration, "linear"); child.stop().animate({/* css */}, inputZoomDura

我想在一些拇指上创建缩放效果

以下是我的javascript简化代码:

parent.hover(
 function(){
   parent.stop().animate({/* css */}, inputZoomDuration, "linear");
   wrapper.stop().animate({/* css */}, inputZoomDuration, "linear");
   child.stop().animate({/* css */}, inputZoomDuration, "linear");
 },
 function(){
  alert("leave");
  child.stop().animate({/* css */}, 140, "linear");
  wrapper.stop().animate({/* css */}, 140, "linear");
  parent.stop().animate({/* css */}, 140, "linear");
 }
);
html是这样的:

<div parent>
 <div wrapper>
  <div child>

  </div>
 </div>
</div>

当我超过“家长”时,我会增加所有div的大小。但是,当我超过(或离开,顺便说一句)其中一个孩子时,警报就会出现。 如果没有警报,结果是一个非常有缺陷的动画。 有没有什么方法可以防止孩子吃得过饱时触发鼠标移动事件

致以最良好的祝愿

谢谢

编辑: 下面是greasemonkey脚本: 和一个测试它的链接:
我们可以在控制台中看到,当我离开橙色分区时,mouseleave事件被触发,这与下面的示例不同:当我离开红色分区时,事件没有被触发。

将事件从
.hover()
更改为
.mouseenter()
。这将确保它将保持活动状态,直到您离开父div区域,您可以使用
mouseleave()
事件来检测父div区域。-

经过一些调查,问题似乎来自greasemonkey。 以下是维基所说的:

某些版本的jQuery将无法运行 在Greasemonkey沙箱里。截至 这篇文章,1.3.2确实有效,但是 1.4.1不适用。可以修补jQuery的1.4版本以使其正常工作, 请参阅jQuery论坛:导入jQuery 1.4.1在greasemonkey脚本中生成错误

但是,jQuery的所有1.4.x版本补丁仍然不能在我的特定悬停情况下工作,并且只能在greasemonkey中工作(事实上,我在JSFIDLE中测试了相同的脚本,这可以在jQuery 1.4.4中工作)


为了解决这个问题,我只需使用jQuery 1.3.2(当然,我必须稍微修改一下代码)。

hover
带有两个处理程序是
mouseenter/mouseleave
的快捷方式。hover是mouseenter和mouseleave的快捷方式,所以更改它不会有什么区别。真正的问题在于事件冒泡。@Box9:关于冒泡,这就是
mouseenter()
mouseleave()
应该解决的问题,因为它们是为了模拟微软的
mouseenter/mouseleave
事件而设计的,这些事件不会冒泡。我想还有别的事情发生了。@patrick,你是对的,我关于冒泡的错误。Mouseover和mouseout是有气泡的。我的答案是无效的。你使用的是什么版本的jQuery?你能提供重现问题的实际代码吗?谢谢你的回答。我在greasemonkey脚本中使用jquery(1.4.2)。代码有点复杂。我会尽快把它贴在这里,只要我把它清理干净一点,然后测试你说的话。如果可能的话,创建一个复制这个问题的例子。(请务必选择左侧正确的库。)抱歉,耽搁了。我不能用jsFiddle重现这个问题。我甚至尝试创建一个类似的代码:在本例中,所有代码都可以正常工作。当鼠标位于红色div上时,所有div的大小都会增加。但当我离开红色div(绿色div的孩子)时,我不会触发mouseleave事件。在我的greasemonkey脚本中,当我离开子div时,事件被触发。我想发布用户脚本,但您需要greasemonkey扩展(适用于Firefox3.6.x)。我知道如果没有示例,很难理解bug。