jQuery:hover(鼠标移过子节点时触发mouseleave事件)

时间:2011-01-16 14:22:03

标签: jquery hover parent

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

这是我的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的大小。但是当我结束(或离开,顺便说一下)其中一个孩子时,就会出现警报。 没有警报,结果是一个非常疯狂的动画。 是否有任何方法可以防止在儿童被遮挡时触发mouseleave事件?

致以最诚挚的问候,

感谢。

修改: 这是greasemonkey脚本:http://userscripts.org/scripts/show/94786 以及测试它的链接:http://browse.deviantart.com/ 我可以在控制台中看到,当我离开橙色div时,mouseleave事件是trigerred,与此示例不同:http://www.jsfiddle.net/wnuS6/3/当我离开红色div时,事件不会被触发。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

经过一番调查,似乎问题来自于油脂。 以下是维基所说的内容:

  

某些版本的jQuery无法运行   在Greasemonkey沙箱里面。作为   这篇文章,1.3.2确实有用,但是   1.4.1没有。可以修补1.4版本的jQuery来工作,   看jQuery论坛:导入jQuery   1.4.1进入greasemonkey脚本生成错误

但是,所有版本1.4.x修补的jQuery仍然无法在我的特定悬停情况下工作,并且仅使用greasemonkey(实际上,我在jsFiddle中测试相同的脚本,并且与jQuery 1.4.4一起工作)。

要解决这个问题,我只使用jQuery 1.3.2(当然,我必须稍微调整一下代码。)