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