javascript - 我将如何优化查找视口(viewport)中可见的最上面行

标签 javascript jquery ajax underscore.js

我想看看是否可以优化代码来检查给定时刻哪一行位于视口(viewport)顶部。该函数在滚动事件上运行,并且页面动态加载新单元格(每行最多四个)。该布局由一系列列表项组成,完全位于网格中(大多数情况下为 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);
            })

正如您可能猜测的那样,添加的单元格越多,这需要的时间就越长

最佳答案

有点难以解释,但我认为你可以在最后一次滚动时将最后一个 topMostRow 存储在 var 中,然后,你可以在循环中使用

$(lastTopMostRow).next();

$(lastTopMostRow).prev();

关于滚动方向(向上或向下)

并检查差异中比率为正的一个和下一个为负的比率

这样您将只检查几行而不是全部。

关于javascript - 我将如何优化查找视口(viewport)中可见的最上面行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26054038/

相关文章:

javascript - 标签计数器

javascript - 网页滚动时滚动固定位置div(overflow y)

jQuery DataTables - 无法重新初始化 DataTable

javascript - 无法使用ajax发送元素ID数据

jquery - 保护 jquery ajax 调用的安全

javascript - 用 javascript 中的文字对象替换 switch case(在 c++ 中)

javascript - 通过 javascript 切换 div 大小

c# - $.post 中的 URL 包含多个网站

jquery - Ajax加载wordpress模板部分

javascript - QueryReadStore 将 JSON 加载到 DataGrid 中,但 JsonRestStore 不会(来自同一来源)