我目前有以下函数可以有效地从Django中检索JSON并通过无限滚动加载电影。但是,我发现有时这个事件会多次触发,最终会使同一页面两次。
$(window).scroll(function() {
var break_point = $(document).height() - ($(window).height() * 1.02);
if ($(window).scrollTop() >= break_point) {
var timePeriod = $('.tab-content').find('.active').attr('id');
var nextPage = $('#'+timePeriod+' ul li:last').attr('data-next');
if (nextPage) {
loadMovies(timePeriod, nextPage);
}
}
});
阻止此侦听器每页执行多次的最佳方法是什么?
答案 0 :(得分:1)
感谢Rob的帮助!我只是发布了我最终为其他人的参考做的事情。我使用了underscore.js库的去抖函数。
var infiniteScroll = _.debounce(function() {
var break_point = $(document).height() - ($(window).height() * 1.02);
if ($(window).scrollTop() >= break_point) {
var timePeriod = $('.tab-content').find('.active').attr('id');
var nextPage = $('#'+timePeriod+' ul li:last').attr('data-next');
if (nextPage) {
loadMovies(timePeriod, nextPage);
}
}
}, 250);
$(window).scroll(infiniteScroll);
答案 1 :(得分:0)
使用.one('scroll',function()而不是.scroll(function()
)考虑到您的功能,您可能必须在重新加载时重新附加处理程序。但是一个()会确保它只在你附上它后才会发射一次。