如何检测元素是否已滚出,但只有一次?

ben*_*mer 3 jquery events scroll event-handling

我试图检测一个元素是否已滚动并完成以下代码

$(window).bind('scroll', function(){
    var $btn = $('#intro div.summary a[href=#top]');
    if($(window).scrollTop() > ($btn.offset().top+$btn.height())){
        console.log('out');
    }
});
Run Code Online (Sandbox Code Playgroud)

我在一些正文中有一个锚点,我希望克隆并在div.intro滚动出来后制作一个固定的导航.

我的问题是,只要元素不在视图中,代码就会触发,但会一直触发.所以我不能再做了,因为任何更多的东西会继续射击.

有没有办法在它出局后"开出"并且一旦出现就"开启"?除了设置一个变量.

Hus*_*ein 7

仅在您可以执行时执行事件

$(window).one('scroll', function(){
    var $btn = $('#intro div.summary a[href=#top]');
    if($(window).scrollTop() > ($btn.offset().top+$btn.height())) {
        console.log('out');
    }
});
Run Code Online (Sandbox Code Playgroud)