1

我的代码

我有一个 div,当您将鼠标悬停在它上面时会显示不同的浏览器,如果支持它们,则在 css 中完成。但是,我也想让它们使用我正在工作的 jquery 进行动画处理。

但是,如果您将鼠标快速移动到悬停区域上,然后将其悬停在其上,该动画将不会重新触发。您必须将鼠标移到很远的地方,然后将鼠标悬停在它上面。我发现重现此问题的最佳方法是将鼠标放在其上方并快速将鼠标悬停在其上并再次悬停几次。

我怀疑原因是 jquery 仍然认为鼠标已经结束,即使 css 隐藏它并说它不是。我还认为必须将鼠标移远是时间相关而不是距离,但再次不确定。我还尝试了 .mouseover()、.hover() 和 .mouseenter(),其中 .mouseenter() 似乎表现最好。

这是可疑的行为吗?这并不完全是“破坏”,但我希望这种效果能够发挥作用。如果这是预期的行为,css3 动画是否能够复制我想要的效果?

另外作为旁注,如果您查看了小提琴,我应该考虑添加任何其他浏览器吗?(个人观点还可以,但如果有任何浏览器偷偷地变得更受欢迎,则更多)

4

2 回答 2

2

您可以通过添加 stop() 来解决此问题

$(this).stop().animate({'width':'25px'},500);

更多信息在这里:http ://api.jquery.com/stop/

于 2012-06-17T14:16:30.757 回答
0

我认为如果您没有停止最后一个动画,这种情况经常发生,我认为您可以使用这样的方式解决该问题。

 $(this).stop().animate( /*your animation*/ );

有时,您应该检查所有元素,而不仅仅是动画,因为我记得有一些用户遇到了问题,他们只是按 Enter 键就停止了 javascript 验证(那是我使用 VTiger 的时候)。

这个链接有一些关于它的信息http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup

总结一下,我认为有一堆未知的浏览器,如 midori、maxthon,以及一些在 linux 中使用的其他浏览器,如 konqueror 和其他一些浏览器。

于 2012-06-17T14:34:51.047 回答