如何在3次延迟后删除元素?

时间:2011-01-05 09:08:33

标签: javascript jquery dom html-lists

$('#gallerie ul li:eq(1)').animate({opacity: 1}, 1250).remove(); //results in instand remove
$('#gallerie ul li:eq(1)').delay(3000).remove(); //instant remove
$('#gallerie ul li:eq(1)').remove().delay(3000); //that didnt work either

如何在3秒后移除物体而不是立即移除?

6 个答案:

答案 0 :(得分:8)

setTimeout(function(){
     $('#gallerie ul li:eq(1)').remove();
},3000);

答案 1 :(得分:5)

如果您想以.delay方式进行,则需要合并.queue

$("#gallerie ul li:eq(1)").delay(3000).queue(function() {
    $(this).remove();
});

演示:http://jsfiddle.net/karim79/MT4Yd/

答案 2 :(得分:2)

delay方法用于动画,因此只有在其后链接的动画方法才会被延迟。 delay方法在动画队列上放置延迟,它不会延迟代码的执行。

要在动画后删除元素,可以使用它的回调方法。例如:

$('#gallerie ul li:eq(1)').fadeOut(3000, function() {
  $(this).remove();
});

答案 3 :(得分:2)

The manual page说(很明显,实际上):

“在版本1.4中添加到jQuery,.delay()方法允许我们延迟队列中跟随它的函数的执行。它可以与标准效果队列或自定义队列一起使用。队列中的事件被延迟;例如,这不会延迟不使用效果队列的.show().hide()的无参数形式。“

remove()不会使用效果队列。

您可以使用jQuery的fadeOut()hide() ...或完全等同于您的原始尝试Javascript's basic setTimeout function.

希望有所帮助。

答案 4 :(得分:0)

你可以这样做:

setTimeout(function(){
      $('#gallerie ul li:eq(1)').remove();
},3000);

答案 5 :(得分:0)

怎么样:

$('#gallerie ul li:eq(1)').animate({opacity: 1}, 1250,function(){
     $(this).remove();
});