2012-12-31 47 views
0

我在下面的代碼中遇到了一些問題,它工作正常,但是,唯一的問題是當數據未加載時某人滾動了幾次,它會產生問題,例如它加載相同的數據兩次或跳過一些部分,等等。任何幫助將不勝感激來控制這個速度。Jquery在滾動速度上加載更多

var num = 0; 
$(window).scroll(function(){ 
    if ($(window).scrollTop() == $(document).height() - $(window).height()){ 
     num = num + 20; 
      $.get('load_data.php?load=' + num, function(data){ 
       $('#result').append(data); 
     }); 
    } 
}); 

回答

1

一個可能的解決方案是在航點上設置一個標誌。

var flag = false; 
var num = 0; 
$(window).scroll(function(){ 
    if ($(window).scrollTop() == $(document).height() - $(window).height()){  
     if(!flag){ 
      num += 20; 
      $.get('load_data.php?load=' + num, function(data){ 
       $('#result').html(data); 
       flag = true; 
      }); 
     } 
    } 
}); 

這隻會觸發加載的數據一次。 這可能會在頁面特定點上的路標處被解僱。

+0

謝謝您的回答,但是,當我把上面的代碼,仍然存在問題,即它加載20行,然後它加載20個新後則20歲,等.. :(也許它有什麼使用var number。 – sliceruk

+1

添加了對代碼的編輯,嘗試使用if語句中的增量,另外,所以我們不會追加到舊的HTML上,請嘗試用html()函數替換已加載的節點。知道這是如何工作的 – AgnosticDev

1

這解決了它。

<script type='text/javascript'> 
var num = 0; 
var a = 1; 
$(window).scroll(function(){ 
if ($(window).scrollTop() == $(document).height() - $(window).height()){ 

    if (a == 1) { 
     a = 2; 
     num = num + 20; 
       $.get('load_data.php?url=<?php echo $url; ?>&load=' + num, function(data){ 
         $('#result').append(data); 
         flag = true; 
         a = 1; 
       }); 
    } 

} 
}); 
</script> 
+0

很高興聽到它,它看起來與我上面使用的相同的原理,乾杯。 – AgnosticDev