JQuery:使用延迟与HTML或文本设置不起作用

我在这里使用html函数的延迟函数有奇怪的问题。

我使用$( '#element').html( 'Hello World');设置了一个html文本$( '#element').html( 'Hello World');

设置文本后我想让这个文本在3秒内消失。

所以下一行我写道:

 $('#element').delay( 3000).html( '&nbsp'); 

这个不起作用,它将html设置为&nbsp而不等待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('&nbsp'); n(); }); 

如果您没有链接动画或类似的东西,请直接使用setTimeout()setInterval() (以适合的情况为准) .delay() 只是 setTimeout() 的包装器 ,并且没有理由使用额外的代码/没有必要时的复杂性。