2015-07-10 11 views
5

Posso avere nuovi occhi su quello che sta succedendo qui, per favore?jQuery animazioni non eseguite correttamente

La funzione dovrebbe essere: Verifica nuovi dati, se nuovo> dissolvenza in chiusura> ricarica> dissolvenza in apertura, se non sono nuovi dati non animati. Tuttavia ora sta svanendo e in ogni momento controlla i nuovi dati, cosa che non stava facendo quando l'avevo aperto in 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) 
}); 

Tenere a mente Sono stato in su per più di 20 ore con poco sonno quindi potrebbe davvero essere davvero ovvio.

+0

Credo che si intende 'se' –

+0

Aggiungi un jsfiddle a questo e sarai aiutato in un attimo :) –

+0

@MagnusKarlsson Stavo per farlo, ma lo script richiede i file sul lato server, quindi è lì che dovevo chiamarlo per uscire. –

risposta

3

Cerca di utilizzare il principio ASCIUTTO: non ripeterti.

impostare il timeout a prescindere dei dati di volta in volta, ed eseguire l'animazione all'interno del if: (! $ Originale = dati)

$(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

Ottengo dove stai andando, ma si anima ancora durante il controllo dei dati, dovrebbe essere solo animato se ha nuovi dati da caricare. Attualmente lo sto ospitando qui: http: //stream.oxygenrad. io/trouble.php –

+0

Si anima ancora ogni volta che controlla; anche se non ci sono nuovi dati. –

+0

Quindi, per chiarire: [pastebin] (http://pastebin.com/y2hEDBK3) Perché lo script ora si interrompe. –

Problemi correlati