为什么我不能用jQuery延迟删除调用

时间:2011-11-11 22:31:31

标签: jquery jquery-ui delay

我想要一个div来fadeOut然后被删除:

 $('#div').delay(1000).fadeOut(300);
 $('#div').delay(1300).remove();

不幸的是,这只是直接删除div,没有延迟。为什么我无法将删除操作延迟?有什么解决方案?

由于

3 个答案:

答案 0 :(得分:39)

如果你希望在淡化完成后删除元素,你可以fadeOut的回调参数。

$('#div').delay(1000).fadeOut(300, function(){
   $(this).remove();
});

答案 1 :(得分:7)

.delay()仅适用于通过动画队列的方法。因此,它适用于.fadeOut()(动画),但不适用于.remove()(不是动画)。

为了向您展示这是多么专业,这不会延迟:

$('#div').delay(1000).hide();

但是,这样做:

 $('#div').delay(1000).hide(1);

在hide方法上设置一个持续时间会将其转换为动画,然后使用动画队列,然后使用.delay()

要延迟删除项目,您可以使用setTimeout()电话:

setTimeout(function() {
    $('#div').remove();
}, 1300);

或者有点棘手,并在这样的动画上使用完成函数:

$('#div').delay(1000).hide(1, function() {
    $(this).remove();
});

答案 2 :(得分:0)

你可以尝试这样的事情。

$('#div').delay(1000).fadeOut(300,function(){
    setTimeout(function(){
      $('#div').remove()
    } ,1300);

});

我认为它的工作原理应该如此。希望它有所帮助