.delay()和.setTimeout()

Ran*_*lue 19 jquery settimeout

根据jQuery文档.delay(),

.delay()方法最适合延迟排队的jQuery效果.因为它是有限的 - 例如,它没有提供取消延迟的方法 - .delay()不能替代JavaScript的本机setTimeout函数,这可能更适合某些用例.

请问有人可以扩展吗?何时更适合使用.delay(),何时使用更好.setTimeout()

ada*_*ham 27

我认为你发布的内容真的很有用.

使用.delay()jQuery的效果,包括动画.

setTimeout()最适合用于其他一切.例如,当您需要在某个已用时间触发事件时.

  • ...或者当您希望能够取消延迟时. (8认同)
  • 请记住,如果由于某种原因你想要推进你的动画,你不能取消延迟,但你可以使用setTimeout. (2认同)

Der*_*ker 5

据我所知,.delay()这意味着专门用于在给定的jQuery队列中的方法之间添加延迟.例如,如果您想在1秒的时间内将图像淡入视图,让它在5秒内可见,然后再花一秒钟将其淡出视图,您可以执行以下操作:

$('#image').fadeIn(1000).delay(5000).fadeOut(1000);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,.delay()使用起来更直观,因为它专门用于延迟给定jQuery队列中的事件. setImeout()另一方面,它是一种本机JavaScript方法,并非明确用于队列行.如果您希望在单击按钮后弹出警报框1秒钟,则可以执行以下操作:

function delayAlert() {
    var x = setTimeout("alert('5 seconds later!')", 5000);
}

<input type="submit" value="Delay!" onclick="delayAlert();" />
Run Code Online (Sandbox Code Playgroud)