2011-01-05 28 views
2
$('#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秒钟,而不是之后的对象被删除瞬间?如何在3次延迟后删除元素?

回答

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

你杀了我的人 - 那真棒非常感谢 – Tomkay 2011-01-05 09:15:39

+0

岂不'的setTimeout($('#gallerie UL李:! eq(1)')。remove,3 000)'还有工作吗?这是一个严重的问题,我不知道(它在Python中起作用,但Python不是JS ......)。 – delnan 2011-01-05 09:24:51

+0

@delnan,它应该工作,但曼尼给出的例子更容易理解和遵循。 – Soviut 2011-01-05 09:33:31

0

你可以这样做:

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

这个怎么样:

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

delay方法用于动画,它被延迟后,可以进行链接所以只有激励方法。 delay方法在动画队列中放置一个延迟,它不会延迟代码的执行。

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

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

The manual page说(很清楚,实际上) :

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

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

您可以使用jQuery的​​,hide() .. 。或者作为一个完整的相当于原来的尝试,Javascript's basic setTimeout function.

希望帮助

+0

这是一条重要线索 - 谢谢。 – Tomkay 2011-01-05 09:50:01

+0

没问题。很高兴你把它整理出来。 – 2011-01-05 10:41:40