2012-03-12 16 views
0

私は、スクロールによるデータのオンデマンドロードを実装しています。オンデマンドでのスクロール負荷データ

divのためにdocument.readyに関数を登録しました。

データは、スクロールが最後に到達したときにのみ挿入する必要があります。スクロールが最後に到達したかどうかを確認するために、私は以下の関数を使用しています。

$("#tree").scroll(function() { 
       if (isScrolledToBottom(this)) { 

       } 
      }); 

しかし、この関数は正しい値を返していません。スクロールが最後に達したときに真の値を返さなければならないということです。

function isScrolledToBottom(object) { 
      return ($(object).attr('scrollHeight') - $(object).scrollTop() - 1) <= $(object).height(); 
     }; 
+1

は、そのためにすでに解決策があります。 Googleが '無限のAJAXスクロール'のために – kirilloid

答えて

1

代わりにこれを試してみてください:

return ($(object).attr('offsetHeight') + $(object).attr('scrollTop') >= $(object).attr('scrollHeight')); 
1

あなたは無限スクロールを行いたい場合は、ここに私の答えをチェックアウト: How to load the web page content based on user scrolling

をこのデモは、特定のYスクロール位置でトリガーされます。ユーザーが特定のアイテムに到達したときにこれを具体的に実行する場合は、Waypointsプラグインを参照してください。

http://imakewebthings.com/jquery-waypoints/

無限スクロールデモ:私は確信しているhttp://imakewebthings.com/jquery-waypoints/infinite-scroll/

$('.theItems:last').waypoint(function(event, direction) { 
    //Ajax fetch here 
}); 
+0

あなたのコードはうまくいくが、例は非常に混乱している。 – Dan

+0

まあ、私はそれを理解していない人にはコンセプト自体が少し混乱していると思います。あなたは何を理解していますか? – Dutchie432

+0

私はあなたの無限のコード例を制御するjsを探していました。コンテンツが実際にどのように読み込まれ、どこにあるのかを理解することができました。 – Dan

0
var scrollHeight = $(object).prop("scrollHeight"); // total scrollable height of the element 
    var scrollTop = $(object).scrollTop(); // how far you have come from the top while scrolling vertically 
    var height = $(object).height(); // the constant height of the portion in display at all times 

    if (scrollHeight === (scrollTop + height)) { 
     //console.log("fetching page"); 
     fetchNextPage(); 
    }