根据.delay()
上的jQuery文档,
对于队列jQuery效果之间的延迟,.delay()方法是最好的。因为它是有限的-例如,它没有提供一种取消延迟的方法-.Delay()不是JavaScript的原生setTimeout函数的替代品,后者可能更适合某些用例。
有没有人可以详述一下?什么时候使用.delay()
更合适,什么时候使用.setTimeout()
更好
发布于 2011-09-14 04:26:06
我认为你发布的内容真的很说明问题。
对包括动画在内的jQuery效果使用.delay()
。
setTimeout()
最适合用于其他任何事情。例如,当您需要在某个经过的时间触发事件时。
发布于 2011-09-14 04:32:38
据我所知,.delay()
专门用于在给定jQuery队列中的方法之间添加延迟。例如,如果要在1秒内将图像淡入视图,使其在5秒内可见,然后再花一秒钟将其淡出视图,则可以执行以下操作:
$('#image').fadeIn(1000).delay(5000).fadeOut(1000);
在这种情况下,.delay()
使用起来更直观,因为它专门用于延迟给定jQuery队列中的事件。另一方面,setImeout()
是一种本机JavaScript方法,并不是显式用于队列队列的。如果您希望在单击按钮后1秒弹出一个警报框,您可以执行以下操作:
function delayAlert() {
var x = setTimeout("alert('5 seconds later!')", 5000);
}
<input type="submit" value="Delay!" onclick="delayAlert();" />
发布于 2011-09-14 04:28:39
您可以将delay
用于动画,例如:
$('.message').delay(5000).fadeOut();
您还可以使用timeOut
延迟动画的开始,例如:
window.setTimeout(function(){
$('.message').fadeOut();
}, 5000);
如您所见,在动画中使用delay
比使用setTimeout
更容易。
使用setTimeout
可以延迟几乎所有内容,但使用delay
只能延迟动画。不是动画的方法不受delay
的影响,所以在隐藏元素之前不会等待一段时间,它会立即隐藏它:
$('.message').delay(5000).hide();
https://stackoverflow.com/questions/7407935
复制相似问题