JQuery:使用带有html或文本设置的延迟不起作用

时间:2010-09-09 11:08:24

标签: jquery

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

我使用$( '#element').html( 'Hello World');

设置了html文字

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

所以下一行我写道:

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

这个不起作用,它将html设置为&nbsp而不等待3秒,看起来jquery正在跳过延迟函数。例如,使用fadeOut可以正常工作。我想这与延迟的队列事情有关。

但为什么这不起作用。它非常简单,等待3秒然后运行html函数。

有人可以提供建议吗?感谢。

PS:对于您的信息,我使用jQuery 1.4.2

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('&nbsp'); n();
});

如果您没有链接动画或类似内容,请直接使用setTimeout()setInterval()(取决于具体情况),.delay() just a wrappersetTimeout() { {3}}并且没有理由在没有必要时使用额外的代码/复杂性。