我想看看我是否可以优化代码,以便在给定时刻检查哪一行位于视口的顶部。此函数在scroll事件上运行,页面动态加载新单元格(每行最多四个)。布局由列表项列表组成,绝对位于网格中(大部分时间为4x4)。
今天的代码(scrollPosition早先是fetcher,类似$(window).scrollTop()):
var topMostRow = _.min(this.container.find("li").toArray(), function(row) {
var offset = $(row).offset().top,
diff = scrollPosition - offset;
return Math.abs(diff);
})
正如您可能猜测的那样,需要越来越长的时间来添加更多的单元格
答案 0 :(得分:1)
很难解释,但我认为你可以在最后一次滚动时存储在最后topMostRow
的var中,然后,你可以使用
$(lastTopMostRow).next();
或
$(lastTopMostRow).prev();
关于滚动的指示(向上或向下)
并检查一个比率为正数且下一个为diff
这样您只会检查几行而不是全部行。