This你会找到一个例子:
<div id="first_div">First Div<div>
<div id="second_div">Second Div<div>
$('#first_div').show().delay(2000).fadeOut(300);
$('#second_div').show().delay(2000).hide();
如您所见,fadeOut()
在2秒后被调用; hide()
立即被称为hide()
。为什么? delay()
不等待{{1}}功能。
答案 0 :(得分:5)
快速而肮脏地看待documentation会发现这个
仅延迟队列中的后续事件;例如,这将 不延迟.show()或.hide()的无参数形式 使用效果队列。
答案 1 :(得分:2)
hide()
只需将display
设置为none
,这样就不会发生可以排队的动画。
尝试:
$('#second_div').show().delay(2000).queue(function (n) {
$(this).hide();
});
另外,您应该注意关于delay
的jquerys免责声明:
.delay()方法最适合在排队的jQuery之间延迟 效果。因为它是有限的 - 例如,它没有提供一种方法 取消延迟-.delay()不是JavaScript本机的替代品 setTimeout函数,可能更适合某些用途 例。
所以这可能更合适:
setTimeout(function () {
$('#second_div').hide();
}, 2000);
答案 2 :(得分:1)
您没有为.hide()
指定时间例如.hide(2000);
你可以从那里推迟。
答案 3 :(得分:1)
在版本1.4中添加到jQuery,.delay()方法允许我们延迟 在队列中执行跟随它的函数。它可以使用 使用标准效果队列或使用自定义队列。只要 队列中的后续事件被延迟;例如,这不会 延迟不使用的.show()或.hide()的无参数形式 效果排队。
基本上,fadeOut使用效果队列,因此会延迟。但show(),hide()不遵循任何队列