0

非常に単純なjQueryの無限スクロールを使用して、番号付きのページネーションの必要性を排除していますが、小さな問題に遭遇しています.

無限スクロールを使用するページに移動してロードすると、無限スクロールは計画どおりに機能しますが、それを使用してそのページから移動すると、まだロードされている機能であるため、他のすべてのサイト ページでpjax実行されますか?

無限スクロール機能に、必要なページでのみ実行するか、pjaxがページを変更したときに何らかの方法でリセットするように基本的に指示するにはどうすればよいですか?

これまでの無限スクロールのコードは次のとおりです。

$(window).on("scroll", function() {

    if($(window).scrollTop() == $(document).height() - $(window).height()){

        // Do scroll pagination, load content into #load-here ..
    }
}

これは私がスクロールを機能させたい方法です:

$("a:not(.no-dynamic)").pjax("#main");

$(document).on('pjax:end',   function() {
    if($("#load-here").length == 0) {
        $(window).off("scroll");
    }
    else
        $(window).on("scroll");
});
4

3 に答える 3

1

これを試して:

の代わりに$(window).scroll()、次のようにします。

$(window).on('scroll', function() {
    // stuff
});

私はpjaxを使用したことがありませんが、ドキュメントによると、end使用できるコールバックがあります。

$(document)
    .on('pjax:end', function() {
        $(window).off('scroll');
    });

windowアイデアは、pjaxリクエストが終了するたびに「スクロール」イベントのバインドを解除することです。

于 2012-05-28T14:38:24.340 に答える
1

同様の問題がありました。特定の div (隠しページネーション div) が存在しなくなった場合、スクロール ハンドラーのバインドを解除することで修正しました。

$(window).scroll(function()
{
    if($('#pagination').length == 0){
   $(window).unbind('scroll',<<scroll handler function>>);

        return;
}
  ......
}
于 2012-05-28T15:08:51.720 に答える
0

window.onbeforeunloadを処理して、無限スクロールのバインドを解除します

于 2012-05-28T14:28:54.423 に答える