为什么不延迟()工作?

时间:2013-10-11 17:22:29

标签: jquery

代码:

<div id="Test">test</div>

$('#Test').delay(5000).html('').hide('slow');

我需要在5秒后关闭DIV,但它会立即关闭。

我需要更改什么才能在5秒后关闭?

2 个答案:

答案 0 :(得分:1)

delay()将仅延迟使用队列执行的方法,如animation(),fadeIn()等

  

设置计时器以延迟执行队列中的后续项目。

使用setTimeout

setTimeout(function(){
    $('#Test').removeClass("test1").removeClass("test2").html('').hide('slow');
}, 5000)

或使用queue()来延迟执行以后的代码

$('#Test').delay(5000).queue(function(){
    $(this).html('').hide('slow');
})

答案 1 :(得分:0)

我认为你想要反向最后两个方法调用......

<div id="Test">test</div>
$('#Test').delay(5000).hide('slow', function(){
    $(this).html('');//only when done remove the content
});

然而,正如@Royi Namir所指出的那样......延迟()真的意味着在动画序列中使用......所以你可能首先需要一个“假”动画(基本上是无操作)然后是延迟。

<div id="Test">test</div>
$('#Test').css({'opacity':0.95}).fadeIn('slow').delay(5000).hide('slow', function(){
    $(this).html('');//only when done remove the content
});

这是一个黑客攻击...强制fadeIn动画...延迟...然后慢慢隐藏......并清除内容。如果你真的想先删除内容,那么它会使hide()动画变得多余。