当元素在其父元素的某个区域内时检测或触发事件

时间:2013-02-17 21:08:19

标签: javascript jquery html javascript-events listeners

div overflow-y 设置为滚动(只有部分内容可见)会有关键元素不同高度(在这种情况下 divs 。我的计划是每当每个关键元素都被看到时ping服务器。

示例:父div 1000px 高,但实际上只能看到 80px和420px 之间的区域。 30 不可预测的高度的其他关键div将会在内部。为了举例,假设我需要在整个密钥div#27位于其父级的第80和第420个像素之间时ping服务器。

我有想法将所有子div的高度存储在全局数组中以供稍后使用,但它似乎并不是最明智的选择。我真的不确定如何在这种情况下触发事件。如果它是一个倾听者,谁应该倾听,为什么?

实现这一目标的最佳方法是什么?我对jQuery或纯JavaSrcript感到满意。

对于需要解决类似问题的人来说,

我通过在关联数组中存储我要监视的DIV的ID并使用.on(“scroll”,function)将事件处理程序附加到父DIV来实现它

每次用户滚动父DIV时,它将遍历数组以检查子项的下边框的位置($(“#childdiv”)。position()。top + $(“#childdiv”)。 height())低于父DIV的高度(以确保整个DIV可见)

我还发现明智的做法是使用delete Array [id]从数组中删除该项;并执行我想要的动作。

如果有人有更好的主意,我很乐意听到。

1 个答案:

答案 0 :(得分:0)

对于需要解决类似问题的人...

通过将要监视的DIV的ID存储在关联数组中,并使用{Name:test Tags:[[browser Chrome 28.0.1500] [browser.name Chrome]]} 将事件处理程序附加到父DIV上,从而使它起作用。

每次用户滚动父DIV时,它将循环遍历数组以检查子底部边框(.on("scroll", function))的位置是否低于父DIV的高度(以确保整个DIV可见) )。

我还发现使用$("#childdiv").position().top + $("#childdiv").height()从数组中删除项目并执行所需的操作是明智的选择。

如果有人有更好的主意,我很想听听。