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

Nov*_*der 13 javascript jquery

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

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

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

所以下一行我写道:

$('#element').delay( 3000).html( '&nbsp');
Run Code Online (Sandbox Code Playgroud)

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

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

有人可以提供建议吗?谢谢.

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

And*_*y E 24

delay()默认为动画队列,对于fadeOut()等效果.您应该使用setTimeout()代替:

window.setTimeout(function () {
    $("#element").html(' ');
}, 3000);
Run Code Online (Sandbox Code Playgroud)

来自http://api.jquery.com/delay/:

jQuery.delay()最适合在排队的jQuery效果之间延迟,并且不能替代JavaScript的本机setTimeout函数,这可能更适合某些用例.

  • 为了更准确,`.delay()`适用于*any*队列,它只是*默认*到动画队列:) (4认同)

Nic*_*ver 16

.html()不是排队的功能.如果你想在动画队列中按顺序发生它,你必须.queue()自己做,如下:

$('#element').delay(3000).queue(function(n) { 
  $(this).html('&nbsp'); n();
});
Run Code Online (Sandbox Code Playgroud)

如果你不将动画链接或像这样的东西,使用setTimeout()setInterval()(两者都适合的情况),直接,.delay()只是一个包装setTimeout(),而且也没有理由使用额外的代码/复杂性时,有没有这个必要.