jQuery:hover(鼠标悬停在子对象上时激发mouseleave事件)
我想在一些拇指上创建缩放效果 以下是我的javascript简化代码: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
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。