2015-07-10 61 views
5

請問我可以重新看到這裏發生的事情嗎?jQuery動畫未能正確動作

的功能應該是:如果新的檢查新數據>淡出>重載>淡入,如果不是新的數據不動畫。然而,現在它正在逐漸消失,並且每次都會檢查新數據,而這些數據在我將它在dev中打開時不會執行。

$(function() { 
    function reload(elem, interval) { 
     var $elem = $(elem); 
     var $original = $elem.html(); 
     $.ajax({ 
      cache: false, 
      url: 'track.php', 
      type: 'get', 
      success: function(data) { 
       if ($original == data) { 
        setTimeout(function() { 
        $("#air_track").fadeOut(); 
         reload(elem, interval) 
        $("#air_track").fadeIn("slow"); 
        }, interval); 
        return 
       } 
       $elem.html(data); 
       setTimeout(function() { 
        reload(elem, interval) 
       }, interval) 
      } 
     }) 
    } 
    reload('#air_track', 5000) 
}); 

牢記這一點我已經彌補超過20小時,睡眠不足,因此它可能實際上是真的很明顯。

+0

我想你的意思是'如果' –

+0

添加的jsfiddle到這一點,你會很快得到幫助:) –

+0

@MagnusKarlsson我打算,但腳本要求服務器端文件,所以這是我不得不稱之爲退出的地方。 。HTTP: –

回答

3

嘗試使用DRY原則 - 不要重複自己。

每次設置超時,無論數據,並執行if裏面的動畫:(!$原有=數據)

$(function() { 
    var reload = function(elem, interval) { 
    var $el = $(elem); 

    $.ajax({ 
     cache: false, 
     url: 'track.php', 
     type: 'get', 
     success: function(data) { 
     var html = $.parseHTML(data); 
     var newText = $(html).text().trim(); 
     var current = $el.find('span').text().trim(); 
     if (current != newText) { 
      $el.fadeOut(function() { 
      $el.html(data).fadeIn('slow'); 
      }); 
     } 
     setTimeout(function() { 
      reload(elem, interval); 
     }, interval) 
     } 
    }); 
    }; 

    reload('#air_track', 5000); 
}); 
+0

我得到你要去的地方,但對數據的檢查時,它仍然動畫,它應該只動畫,如果有新的數據加載在 我目前在這裏收留了它//stream.oxygenrad。 io/trouble.php –

+0

每當它檢查時它仍然動畫。即使沒有新的數據。 –

+0

所以我只想澄清:[引擎收錄](http://pastebin.com/y2hEDBK3) 因爲腳本現在打破。 –