2012-09-02 48 views
0

我有一個jquery腳本正確加載無限滾動設置的新頁面。我想要做的就是讓它在距離底部300px的地方說出來,然後加載更多。我現在能夠做到這一點,但不幸的是滾動註冊多次,阿賈克斯加載頁面的其餘部分。我試過setTimeout無濟於事。延遲無限滾動jQuery或JavaScript

 (function(){ 

      //inner functions will be aware of this 
      var currentPage = 1; 

       $(window).scroll(function() { 

       if($(window).scrollTop() + $(window).height() > $(document).height() - 300) { 

        $.ajax({ 
         type: "GET", 
         url: "posts/page/" + currentPage, 
         data: "", 
         success: function(results){ 
          $(".container").append(results).masonry('reload'); 
         } 
        }) 
        setTimeout(currentPage++,3000); 

       } 

      }); 

     })(); 

回答

6

經過這樣的修改,你不執行另一個AJAX請求如果以前尚未結束:

(function(){ 

    //inner functions will be aware of this 
    var currentPage = 1, 
     currentXHR; 

     $(window).scroll(function() { 

     if($(window).scrollTop() + $(window).height() > $(document).height() - 300) { 

      if (currentXHR) { 
       return; 
      } 

      currentXHR = $.ajax({ 
       type: "GET", 
       url: "posts/page/" + currentPage++, 
       data: "", 
       success: function(results){ 
        $(".container").append(results).masonry('reload'); 
       }, 
       complete: function() { 
        currentXHR = null; 
       } 
      }) 

     } 

    }); 

})(); 
+0

完美:)只是出於好奇心xhr代表什麼? – bswinnerton

+1

@bswinnerton:'XMLHttpRequest' – zerkms

0

有這個here一個極好的RailsCast(不用擔心,如果你不是Ruby,你只是得到了JSON數據。)