[英]How to add a delay to slideToggle
I am trying to delay each image by one second after the other.我试图将每个图像一秒一秒地延迟。 But the delay doesn't seem to work.
但延迟似乎不起作用。
$( document ).ready(function() {
$("#logo1").slideToggle(1000,"easeOutBounce");
$("#logo2").delay(1000).slideToggle(1000,"easeOutBounce");
$("#logo3").delay(2000).slideToggle(1000,"easeOutBounce");
$("#logo4").delay(3000).slideToggle(1000,"easeOutBounce");
$("#logo5").delay(4000).slideToggle(1000,"easeOutBounce");
$("#logo6").delay(5000).slideToggle(1000,"easeOutBounce");
$("#logo7").delay(6000).slideToggle(1000,"easeOutBounce");
$("#logo8").delay(7000).slideToggle(1000,"easeOutBounce");
$("#logo9").delay(8000).slideToggle(1000,"easeOutBounce");
$("#logo10").delay(9000).slideToggle(1000,"easeOutBounce");
$("#logo11").delay(10000).slideToggle(1000,"easeOutBounce");
$("#logo12").delay(11000).slideToggle(1000,"easeOutBounce");
$("#logo13").delay(12000).slideToggle(1000,"easeOutBounce");
});
And the HTML和 HTML
<img src="images/logo/L.png" id="logo1" />
<img src="images/logo/Y.png" id="logo2" />
<img src="images/logo/O.png" id="logo3" />
<img src="images/logo/N.png" id="logo4" />
<img src="images/logo/S.png" id="logo5" />
<img src="images/logo/&.png" id="logo6" />
<img src="images/logo/S.png" id="logo7" />
<img src="images/logo/H.png" id="logo8" />
<img src="images/logo/A.png" id="logo9" />
<img src="images/logo/N.png" id="logo10" />
<img src="images/logo/N.png" id="logo11" />
<img src="images/logo/A.png" id="logo12" />
<img src="images/logo/N.png" id="logo13" />
The CSS positions the images one after the other. CSS 一个接一个地定位图像。
Please could somebody take a look.请有人看一下。
Thanks.谢谢。
From doc:来自文档:
The .delay() method is best for delaying between queued jQuery effects.
.delay() 方法最适合在排队的 jQuery 效果之间延迟。
eg例如
$('#test').show().delay(1000).hide();
In your case, I suggest在你的情况下,我建议
1. Chain it 1. 链接起来
$("#logo1").slideToggle(1000,"easeOutBounce", function()
{
$("#logo2").slideToggle(1000,"easeOutBounce", function()
{
// do something after logo2 finished sliding.
// keep doing this until logo13..
});
});
2. Use deferred object 2. 使用延迟对象
$(function(){
function slide(elem)
{
var deferred = $.Deferred();
$(elem).slideToggle(1000,"easeOutBounce", function()
{
deferred.resolve();
});
return deferred.promise();
}
var logos = ['#logo1', '#logo2', '#logo3'];
var i = 0;
function runSlider()
{
slide(logos[i]).done(function(){
i++;
if (logos[i] != null) runSlider();
});
}
});
I prefer the 2nd one though.不过我更喜欢第二个。 And btw, I haven't tested this code yet.
顺便说一句,我还没有测试过这段代码。 Good luck.
祝你好运。
I seemed to have solved it.我好像解决了。 I'm not sure if this is the best way but it works.
我不确定这是否是最好的方法,但它有效。 (I altered the times too)
(我也改了时间)
$( document ).ready(function() {
$("#logo1").slideDown(1000);
function logo2(){
$("#logo2").slideDown(1000);
}setTimeout(logo2, 300);
function logo3(){
$("#logo3").slideDown(1000);
}setTimeout(logo3, 600);
function logo4(){
$("#logo4").slideDown(1000);
}setTimeout(logo4, 900);
function logo5(){
$("#logo5").slideDown(1000);
}setTimeout(logo5, 1200);
function logo6(){
$("#logo6").slideDown(1000);
}setTimeout(logo6, 1500);
function logo7(){
$("#logo7").slideDown(1000);
}setTimeout(logo7, 1800);
function logo8(){
$("#logo8").slideDown(1000);
}setTimeout(logo8, 2100);
function logo9(){
$("#logo9").slideDown(1000);
}setTimeout(logo9, 2400);
function logo10(){
$("#logo10").slideDown(1000);
}setTimeout(logo10, 2700);
function logo11(){
$("#logo11").slideDown(1000);
}setTimeout(logo11, 3000);
function logo12(){
$("#logo12").slideDown(1000);
}setTimeout(logo12, 3300);
function logo13(){
$("#logo13").slideDown(1000);
}setTimeout(logo13, 3600);
});
Thanks for your help谢谢你的帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.