2015-07-10 16 views
5

Tôi có thể có được đôi mắt mới mẻ về những gì đang xảy ra ở đây không?Hoạt ảnh jQuery không được thực hiện chính xác

Chức năng được cho là: Kiểm tra dữ liệu mới, nếu mới> mờ dần> tải lại> mờ dần, nếu đó không phải là dữ liệu mới không hoạt ảnh. Tuy nhiên bây giờ nó mờ đi và trong mọi lúc nó kiểm tra dữ liệu mới, mà nó đã không được thực hiện khi tôi đã có nó mở trong 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) 
}); 

Hãy ghi nhớ Tôi đã ngủ hơn 20 giờ với ít giấc ngủ để thực sự có thể thực sự rõ ràng.

+0

Tôi nghĩ bạn có nghĩa là 'nếu ' –

+0

Thêm một jsfiddle này và bạn sẽ được giúp đỡ trong thời gian không :) –

+0

@MagnusKarlsson Tôi đã đi, nhưng kịch bản yêu cầu các tập tin phía máy chủ vì vậy đó là nơi tôi đã phải gọi nó thoát. –

Trả lời

3

Hãy thử sử dụng nguyên tắc DRY - đừng lặp lại chính mình.

Đặt thời gian chờ bất kể dữ liệu mỗi lần, và thực hiện các hình ảnh động bên trong if: (! $ Ban đầu = dữ liệu)

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

Tôi nhận được nơi bạn đang đi, nhưng nó vẫn hoạt hình khi kiểm tra dữ liệu, nó sẽ chỉ hoạt hình nếu nó có dữ liệu mới để nạp. Tôi hiện đang lưu trữ nó ở đây: http: //stream.oxygenrad. io/trouble.php –

+0

Nó vẫn hoạt hình bất cứ khi nào nó kiểm tra; ngay cả khi không có dữ liệu mới. –

+0

Vì vậy, chỉ cần làm rõ: [pastebin] (http://pastebin.com/y2hEDBK3) Vì tập lệnh giờ đây bị hỏng. –

Các vấn đề liên quan