2011-03-06 47 views

回答

3

你使用會出於種種原因工作的代碼 - 有呼叫fadeOutfadeIn之間的零延遲意味着你不會得到你淡入淡出之間尋找的3秒延遲,而且通話這兩個函數都會導致jQuery效果隊列產生一些奇怪的效果。

一個更好的選擇將是一起使用遞歸函數delay做到這一點:

var div = $('div').hide(), 
    news = ['news1', 'news2', 'news3'], 
    count = 0; 

function changeNews() { 
    div.fadeIn(3000).delay(3000).fadeOut(3000, function() { 
     changeNews(); 
    }).text(news[count++]); 
} 

changeNews(); 

這方面的一個簡單的演示可以在這裏找到:http://jsfiddle.net/Fpu2E/4/

2

這工作...

var news = ['news1', 'news2', 'news3'], 
    count = news.length, 
    currentItem = 0; 

showNextItem = function() { 

    $('div').text(news[currentItem++]).fadeIn(3000, function() { 
     var element = $(this); 
     setTimeout(function() { 
      element.fadeOut(1000, function() { 
       if (currentItem < count) { 
        showNextItem(); 
       } 
      }); 

     }, 3000); 
    }); 

}; 

showNextItem(); 

jsFiddle

+0

感謝亞歷克斯+1,但我認爲Yi的方法更簡單。 – Pinkie 2011-03-06 14:47:22