我正在使用一个非常简单的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");
});
答案 0 :(得分:1)
试试这个:
而不是$(window).scroll()
,请执行:
$(window).on('scroll', function() {
// stuff
});
我从未使用过pjax,但根据docs,您可以使用end
回调:
$(document)
.on('pjax:end', function() {
$(window).off('scroll');
});
这个想法是每次pjax请求结束时从window
取消绑定“滚动”事件。
答案 1 :(得分:1)
我有类似的问题。通过解除滚动处理程序的绑定来修复它,如果一个特定的div(隐藏的分页div)不再存在。
$(window).scroll(function()
{
if($('#pagination').length == 0){
$(window).unbind('scroll',<<scroll handler function>>);
return;
}
......
}
答案 2 :(得分:0)
处理window.onbeforeunload取消绑定无限滚动