Javascript 有没有办法知道一个元素何时经过另一个元素?

Javascript 有没有办法知道一个元素何时经过另一个元素?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个粘滞的元素,当它经过另一个元素时需要识别,以便从屏幕上消失 这是应该消失的元素: .sticky-footer .container .row.sticky-row .col-xs-6 // text .col-xs-6 // text 当用户向下滚动并通过此元素时: hr#line-before-related-article css或jQuery

我有一个粘滞的元素,当它经过另一个元素时需要识别,以便从屏幕上消失

这是应该消失的元素:

.sticky-footer
    .container
        .row.sticky-row
            .col-xs-6
                // text
            .col-xs-6
                // text
当用户向下滚动并通过此元素时:

hr#line-before-related-article

css或jQuery有什么方法可以做到这一点吗?

您可以监听每次滚动页面时触发的事件,然后检查其位置是否超过相关文章之前的hr行

下面是一个例子:

$(window).on('scroll', function() {

    if ($(this).scrollTop() + $(this).height() >= $('#line-before-related-article').position().top) {

        $('.sticky-footer').hide();

    } else if ($('#line-before-related-article').position().top >= $(this).scrollTop()) {

        $('.sticky-footer').show();
    }
})
如果你想要更高性能的东西,你可以使用一个叫做去盎司函数的东西

对于那些不知道去盎司函数做什么的人来说,它限制了函数启动的速率。一个简单的例子:窗口上有一个调整大小的侦听器,它执行一些图元尺寸计算,并(可能)重新定位一些图元。这本身并不是一项繁重的任务,但在多次调整大小后被反复解雇确实会减慢你的网站速度。为什么不限制函数的启动速率


更多信息请参见:

这是根DOM元素:
$(this)=$(document)超级怪异。当我开始向下滚动时,粘性元素消失了。我已经这样做了。事实上,我不得不更改
$(文档)
,并将
$(窗口)
放进去。我现在要做的是重新启动操作,这样当用户滚动到顶部时,粘性元素会再次出现。我会将其添加到答案中。您可以这样做:
($(“#相关文章前的行”).position().top>=$(this.scrollTop())