【发布时间】:2013-02-17 21:08:18
【问题描述】:
在 div 中,将 overflow-y 设置为 scroll(只有部分可见)会有 关键元素不同高度的(在本例中为divs)。我的计划是每次看到这些关键元素时都 ping 服务器。
示例:父 div 的高度为 1000px,但实际上只有 80px 和 420px 之间的区域可见。里面会有大约 30 个其他 不可预测 高度的关键 div。举例来说,假设我需要在 整个键 div #27 位于其父级的第 80 和第 420 个像素之间时 ping 服务器。
我有将所有子 div 的高度存储在一个全局数组中以供以后使用的想法,但这似乎不是最明智的选择。我真的不确定如何在这种情况下触发事件。如果是倾听者,谁应该倾听?为了什么?
实现这一目标的最佳方法是什么?我对 jQuery 或纯 JavaScript 都很满意。
【问题讨论】:
-
可以给
$("#container-div").on('scroll'绑定一个方法,检查每个div的.position().top + .height是否大于父div的.scrollTop,但小于scrollTop + height (420px)。你只担心垂直还是水平? -
这是我的第一个想法。我会让它遍历所有的 div 并检查它们中的每一个是否在父级的可见部分中都有它的“头”和“脚”。我对这种方法的担忧在于处理能力,因为我认为机器不会停止循环,直到用户停止滚动或者我错了吗?
-
这取决于你有多少这些 div。你有没有试过看看它是否有效?
-
正如我所料,每次滚动 div 时机器都会运行循环。我不能确切地说多少次,但它似乎只有 1 个像素。并且 div 没有像以前那样平滑滚动。现在我只有 8 个子 div,但在现实生活中可能会超过 100 个。
-
不是在每个滚动事件上都这样做,你可以在计时器上这样做;就像在滚动时为 100 MS 设置超时并在滚动时清除它(所以它最多每 100 MS 发生一次)。除此之外,我们可以努力提高代码效率,但可能会有上限。
标签: javascript html jquery listener dom-events