1

大家好,这是我在 stackoverflow 上的第一个问题,
我创建了一个简单的代码来管理菜单。这是代码。
http://jsfiddle.net/corvallo/97x89/5/

如果我点击“gestione news”,所有菜单元素都会以不同的延迟向左滑动,并且会出现带有文本“Articoli”的图像(在 jsfiddle 上你看不到)。
所以我点击图像,文本“articoli”将淡出,菜单元素将重新出现在与以前相同的位置。
所以问题是,如果我尝试 4-5 次,第一个动画(即菜单元素的向左滑动)会变慢,如果我再试一次,动画会越来越慢。

我不认为问题出在 delay() 函数中,而是在 $.each() 中,也许我错了。
有人可以帮我弄这个吗。
先感谢您。

4

2 回答 2

1

在显然完成工作后,动画似乎还在运行一段时间。使用以下命令查看它们何时在 Firebug 或 Chrome 中停止:

$(this).animate({"marginLeft":"0px"},"slow", function(){console.log("anim stopped");});

我不确定它们为什么仍在运行,但您可以在运行新动画之前停止它们,如下所示:

$(this).stop().animate({"marginLeft":"0px"},"slow");

这似乎可以解决您遇到的减速问题。

于 2012-04-05T23:08:04.760 回答
0

将您的菜单放在一个 div 中。不是对每个元素执行 foreach,而是为主 div 设置动画。

延迟不应该导致您的问题,因为所做的只是等待开始动画计时,但是同时运行这么多动画会启动多个内部计时器,而不仅仅是一个,这可能会导致打嗝。

于 2012-04-05T22:56:09.723 回答