2013-02-01 36 views
0

東西與此代碼歪去,但它的晚,我只是無法弄清楚:jQuery JSON淡入淡出 - 不工作?

var json_object = '.$json_twitter_array.'; 

function displayTweets(obj){ 
    $("#tweetblock").html(obj[0].description).fadeIn("slow"); 
    var i = 1; 
    setInterval(
     function(){ 
      $("#tweetblock").html(obj[i].description).fadeIn("slow"); 
      i++; 
      if(i >= obj.length) i = 0; 
     },6000); 
} 
displayTweets(json_object); 

它通過JSON對象就好循環,問題是淡入不工作,文本剛剛顯示。有人能指出我要去的地方有錯嗎?

非常感謝!

+1

可能的重複:http://stackoverflow.com/q/1490563/1026459,也可能缺乏任何故障排除。 –

回答

2

問題是在實際放置內容之後,您是在淡化對象。一個快速的方法來解決這個問題是一個hide()添加到每個元素html()發生前,然後將內容添加到隱藏區域,並在那之後fadeIn()

所以每個:

$("#tweetblock").html 

變爲:

$("#tweetblock").hide().html 

和最終的代碼應該是這樣的:

var json_object = '.$json_twitter_array.'; 

function displayTweets(obj){ 
    $("#tweetblock").hide().html(obj[0].description).fadeIn("slow"); 
    var i = 1; 
    setInterval(
     function(){ 
      $("#tweetblock").hide().html(obj[i].description).fadeIn("slow"); 
      i++; 
      if(i >= obj.length) i = 0; 
     },6000); 
} 
displayTweets(json_object); 
+1

謝謝傑克,你的解釋看起來很簡單,但我無法在週五晚上解決它。謝謝! – Studio4

1

您需要淡出它,然後才能將其淡入淡出!

fadeInfadeOut只改變元素的可見性。內容發生變化時他們不做任何事情。

1

只是做在CSS一兩件事:

#tweetblock{ 
    display:none; 
} 

然後fadeIn()會發生。