我在这里使用html函数的延迟函数有奇怪的问题。
我使用$( '#element').html( 'Hello World');
设置文本后我想让文本在3秒后消失。
所以下一行我写道:
$('#element').delay( 3000).html( ' ');
这个不起作用,它将html设置为 
而不等待3秒,看起来jquery正在跳过延迟函数。例如,使用fadeOut可以正常工作。我想这与延迟的队列事情有关。
但为什么这不起作用。它非常简单,等待3秒然后运行html函数。
有人可以提供建议吗?感谢。
PS:对于您的信息,我使用jQuery 1.4.2
答案 0 :(得分:24)
delay()默认为动画队列,适用于 fadeOut()等效果。您应该使用 setTimeout():
window.setTimeout(function () {
$("#element").html(' ');
}, 3000);
来自http://api.jquery.com/delay/:
jQuery.delay()最适合在排队的jQuery效果之间延迟,并且不能替代JavaScript的原生 setTimeout 功能,这可能更适合某些用例
答案 1 :(得分:16)
.html()
不是排队功能。如果你想在动画队列中按顺序发生它,你必须自己.queue()
,就像这样:
$('#element').delay(3000).queue(function(n) {
$(this).html(' '); n();
});
如果您没有链接动画或类似内容,请直接使用setTimeout()
或setInterval()
(取决于具体情况),.delay()
just a wrapper为setTimeout()
{ {3}}并且没有理由在没有必要时使用额外的代码/复杂性。