2012-06-11 26 views
1

我試圖讓一連串的jQuery事件正常工作,所以大概我做錯了什麼。jQuery使用.delay鏈接事件

我試圖讓一個GIF圖像出現在div內,停留幾秒鐘,然後淡出並在div內顯示不同的隨機圖像。

由於涉及到Cookie這一事實,這稍微複雜一點,但我似乎有此功能的工作。

目前,gif圖像和隨機圖像同時出現,然後同時淡出。我無法弄清楚爲什麼會發生這種情況,因爲我正在鏈接事件並在它們之間使用.delay。

我對JS是:

{ 
    $(document).ready(function() { 
     var images = ['1.gif', '2.gif', '3.gif', '4.gif']; 
     var COOKIE_NAME = 'lucykydip_cookie'; 
     jQuerygo = jQuery.cookie(COOKIE_NAME); 
     $("a.start").click(function() { 
      $("a.start").hide(); 
      if (!jQuerygo) { 
       $.cookie(COOKIE_NAME, 'ld_cookie'); 
       $('#luckydip').css("background-image", "url(ajax-loader.gif)").delay(5000).fadeOut("slow").delay(5000).html('<img src="' + images[Math.floor(Math.random() * images.length)] + '" style="width: 82px; height:82px; display: block;" />'); 

      } 

      else { 

       $('#luckydip').append('<p>Sorry, our records show that you have already received a voucher code!</p>'); 
} 

要感謝任何幫助!

感謝

回答

6

.delay()不只會影響動畫隊列。 命令.html()忽略這些延遲。

所以,你可以使用它執行節目動畫完成後的.show()回調函數:

http://api.jquery.com/show/

.show(持續時間[回調])

時間的字符串或確定數字 動畫將運行多長時間。

回調一旦 動畫完成,就會調用一個函數。

.delay(5000) 
.show(1, function(){ $(this).html("Hello World"); }) 
+0

謝謝!你只是把我帶到了我需要的地方。我現在使用.show,並按照您的建議調用函數for.html。 – user795918

+0

so @jantimon幫助你?那麼請選擇他的答案爲「最好的」,以便給予他一些認可。這是對任何人說「謝謝」的最好方式。 – Frondor

+0

謝謝!這幫助了我正在開展的一個項目。我沒有意識到.delay()只適用於動畫隊列。超級有用! –