我试图在加载图像后引入延迟,但它一直跳过。delay()
$('"#output'").html('"<center><img src='http://i.imgur.com/GM6KJdh.gif' /></center>'").delay(5000);
我已经尝试了上面代码的许多版本,但它仍然不起作用
感谢大家的帮助。
正如jQuery文档中所解释的,.delay()
是一个jQuery动画方法,它只延迟后续动画(在同一元素上),它不会延迟非动画方法的结果,也不会"暂停"代码执行。因此,在显示的代码行之后的任何代码行都将立即执行。
假设你想做的是在执行下一行之前等待两秒钟,你可以这样做:
$("#output").html("<center><img src='http://i.imgur.com/GM6KJdh.gif' /></center>");
setTimeout(function() {
// your other code here
}, 2000);
它使用JavaScript的内置setTimeout()
函数来延迟你传递给它的函数中任何代码的执行
来自jQuery文档
.delay()方法最适合在排队的jQuery之间延迟效果。因为它是有限的,例如,它没有提供一种方法.delay()不能替代JavaScript的nativesetTimeout函数,它可能更适合某些用途例。
你的图像正在加载,然后延迟触发,然后…接下来会发生什么就看你了。但是因为。delay是附在#output
上的,所以你只能对#output
做一些事情。例如,您可以将其淡出。
$("#output").html("<center><img src='http://i.imgur.com/GM6KJdh.gif' /></center>").delay(5000).fadeOut();
http://jsfiddle.net/M2GRj/如果你想在加载图像之前设置一个延迟,那么在设置html.
之前使用delay$("#output").hide().delay(5000).html("<center><img src='http://i.imgur.com/GM6KJdh.gif' /></center>").fadeIn();
http://jsfiddle.net/M2GRj/3/如果你想在图片加载后触发暂停,那么给你的图片一个ID,并在加载事件中调用setTimeout函数。
$("#output").html("<center><img id='img1' src='http://i.imgur.com/GM6KJdh.gif' /></center>");
// Note: You can only use this after #img1 has been added to the DOM
$('#img1').load(function(){setTimeout('alert("hello")',5000);});
http://jsfiddle.net/M2GRj/5/AFAIK delay()
函数只是延迟队列中后面的函数。所以你需要在delay()
之后调用另一个函数。
也许你可以试试
.delay(5000).finish();
jQuery API说:
.delay()方法允许我们延迟函数的执行跟着它排队。它可以与标准效果队列一起使用或者使用自定义队列。只有队列中的后续事件才会被延迟
作为
下面检查的例子当执行下面的语句时,元素向上滑动300毫秒,然后暂停800毫秒,然后淡出400毫秒。
$('#foo').slideUp(300).delay(800).fadeIn(400);
如果延迟后没有任何后续事件,则可以使用JavaScript's native setTimeout function
如何使用setTimeout function
?
setTimeout(function() {
//your code
}, 2000); // will work with every browser
查看.delay()和setTimeout