2013-05-09 68 views
0

我有這種類型的問題。滾動事件有一些奇怪的行爲

我有一個滾動事件,它檢查我是否已到達頁面的結尾,然後從服務器獲取數據,並且該部分工作正常。

我的問題是,在舊電腦上,我遇到了滾動事件發生時加載的加載項的問題。

我應該怎麼做,以使此代碼的工作,因爲它是更快的計算機上正常工作...

我試圖delay()滾動事件,同樣的事情中的代碼發生...

代碼:

$(window).scroll(function() 
{ 
    if($(window).scrollTop() + $(window).height() == $(document).height()) 
    { 
     $(".loader").show().delay(700).fadeOut(); 
     $.ajax({ ///more code }); 
    } 
}); 

回答

1
var loading = false; 
$(window).scroll(function() 
{ 
    if($(window).scrollTop() + $(window).height() == $(document).height()) 
    { 
     if(!loading){ 
     loading = true; 
     $(".loader").show().delay(700).fadeOut(); 
     $.ajax({ ///more code }) 
     .done(function(){ 
      loading = false; 
     }); 
     } 
    } 
}); 
+0

我在網站上多滾動...將這項工作? – 2013-05-09 21:25:45

+0

這應該可以。..你可以試試.. – 2013-05-09 21:27:47

+0

'.done()'我從沒想過:)這太棒了!所以這隻會在Ajax調用完成時觸發,對吧? – 2013-05-09 21:32:51

0

你不應該使用這樣的:

if($(window).scrollTop() + $(window).height() == $(document).height()) 

但這:

if($(window).scrollTop() + $(window).height() > $(document).height()) 

,並使用VAR的狀態,並檢查它

+0

爲什麼要使用'if($(window).scrollTop()+ $(window).height()> $(document).height())',我通常會觸發頁面的結尾 – 2013-05-09 21:24:44