Javascript JQuery动画未按正确顺序运行
我正在创建一个名为“无意义”的游戏。在英国,这是一场毫无意义的游戏秀。无论如何,有一个倒计时,从100倒计时到球队得到的任何分数。我正试图复制这一点。举个例子,请看这个 无论如何,我试图自己复制倒计时,但是每当我尝试时,整个过程都会立即执行,而不是像应该的那样一次执行一个div。我需要一个接一个地隐藏那些div 请看这个Javascript JQuery动画未按正确顺序运行,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在创建一个名为“无意义”的游戏。在英国,这是一场毫无意义的游戏秀。无论如何,有一个倒计时,从100倒计时到球队得到的任何分数。我正试图复制这一点。举个例子,请看这个 无论如何,我试图自己复制倒计时,但是每当我尝试时,整个过程都会立即执行,而不是像应该的那样一次执行一个div。我需要一个接一个地隐藏那些div 请看这个 for(var i=0;i,因为.toggle()事件(以及其他事件)在整个for循环执行后被准确地触发。或者更确切地说,即使它们不在其中,您也几乎同时对所有它们调用toggl
for(var i=0;i,因为.toggle()
事件(以及其他事件)在整个for循环执行后被准确地触发。或者更确切地说,即使它们不在其中,您也几乎同时对所有它们调用toggle
,因此它们将同时切换。一种解决方法是使用计时器,如setInterval
或setTimeout
:
$('#Go').click(function(){
var i = 0;
var timer = setInterval(function(){
i++;
$('#' + i).toggle('slide');
if(i > 10) clearInterval(timer);
},100)
})
当您在jQuery中调用toggle
或任何其他动画函数时,它不会阻止其余的代码。动画将继续,而其余的代码正在运行。您可以为每个块添加延迟来启动动画
您可以尝试:
我还建议您使用.slideToggle('slow')
而不是.toggle('slide')
Amir解决方案非常好。我只想添加一个小的更正:
jQuery的toggle方法没有任何值可以是slide
的参数。
以下是正确的语法:
$(selector).toggle(speed,easing,callback)
speed in [milliseconds, "slow", "fast"]
easing in ["swing", "linear"] (More easing functions are available in external plugins)
callback is a function
我不知道为什么要投否决票,但谢谢你。我学到了一些东西,你解决了我的问题。谢谢你!@AndrewKilburn Downvote可能是因为在这里发布你的代码也比在这里发布虚假代码更好。也许……我不知道!无论如何,我很高兴我帮了忙:)@Amir抱歉,我只是觉得展示一个工作示例会更容易。谢谢@AndrewKilburn就是这样,感谢您发布一个工作示例。但如果这里也有这段代码,那就太好了:)
$('#' + i).delay(i*100).slideToggle('slow');
$(selector).toggle(speed,easing,callback)
speed in [milliseconds, "slow", "fast"]
easing in ["swing", "linear"] (More easing functions are available in external plugins)
callback is a function