2013-02-06 14 views
0

我實現了一個加載函數,每當頁面結束時觸發。它的工作原理很簡單,但每當我向下滾動時,事件就會被觸發無數次。有沒有更好的方法來實現這個想法還是一種方式來而不是多次觸發這個事件?無盡的加載滾動或如何不觸發無數次的事件

這裏就是我所做的:

var loading = false; 
$(window).scroll(function(){ 
    if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){ 
     if(loading == false){ 
      loading = true; 
      $.get("test", function(data){ 
      $("div.article:last").after(data); 
}); 
      loading = false; 

     } 
    } 
}); 
    $(document).ready(function() { 
    $('#loaded_max').val(500); 
}); 

謝謝!

+0

JavaScript從上到下呈現。如果您在'.get'函數的'回調函數中加載了'loading = false',那麼在獲取請求完成之前它不會嘗試加載或啓動。我認爲這是你想要的功能。所以....長話短說,在'$('div.article:last')。'after(data)'後加'loading === false';' – Ohgodwhy

回答

0

你這樣做:

$.get("test", function(data){ 
    $("div.article:last").after(data); 
}); 
loading = false; 

loading=false;是你$.get回調函數之外。 $.get是一個異步函數,意思是說。 loading=false;在您的$.get之後直接執行,而不是在您的Ajax調用準備就緒時執行。

如果你把你的loading=false;放在你的$.get回調中。您不會同時有多個請求。

解決在同一時間只得到1請求:

$.get("test", function(data){ 
    $("div.article:last").after(data); 
    loading = false; 
}); 

此外,我會開始加載頁面的下一部分像400像素人到達底部之前。所以他們可以繼續滾動,不必等待您的請求準備就緒。我更平滑的方式。

+1

謝謝先生!我真的忘了AJAX中的A ... – AlessandroEmm