0

ページの下部に近づくと新しいアイテムをロードする機能があります。それはうまく機能します。唯一の問題は、新しいアイテムが読み込まれると、スクロール位置が一番上に戻ることです。これは非常に面倒で、私が望むものではありません. 関数は次のとおりです。

function loader(url) {
    $.get(url, function(data) {
        $newPosts = $(data).filter(function(){
            return this.id === 'posts';
        }).children();
        $newPosts.hide();
            $wall.masonry('destroy');
            $('#posts').append($newPosts);
        $newPosts.each(function(){
            $(this).fadeIn('slow');
        });
            $wall.masonry({
                itemSelector: '.entry, .entry_photo',
                isAnimated : false
            });
    }).error(function(url) {
        alert('error');
    });
};

ジャスフィドル

ご覧のとおり、一番上にジャンプしてギザギザに見えます。どうすればそれを防ぐことができますか? そして、なぜそれが起こるのですか?

4

2 に答える 2

2

石積みへの呼びかけがdestroyここでの問題の根源であるように私には思えます。

appendedメソッドを使用する

$wall
  .append( $newPosts )
  .masonry( 'appended', $newPosts );
  .masonry( 'layout' );
于 2013-06-22T04:41:17.827 に答える
0

スクロール機能をこのスクリプトに置き換えて見てください。

デモhttp://jsfiddle.net/yeyene/ajjaz/7/

$(window).scroll(function(){  
    if ($('#posts').outerHeight() - $('body').scrollTop() - 420 <= 0) {
        loader(site);
        $('html, body').animate({ scrollTop: $(this).scrollTop() }, 'fast');
        page += 1;
    }    
});
于 2013-06-22T04:36:49.303 に答える