2011-01-05 29 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