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 回答