如果滚动仅到达某个点一次,则触发功能。不是每一次

时间:2016-12-19 07:44:55

标签: javascript jquery

我想检查一下我的用户是否到达了我页面中的某个位置。所以我创建了以下JS代码:

$(document).on('scroll', function() {
    if($(this).scrollTop()>=$('#page2').position().top){

    alert("trigger");
    }
})

检查用户是否达到我的id =“page2”。但是我希望这只能触发一次,无论用户是否返回,现在每次page2.position()。top = scrollTop都会触发。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

执行所需语句后,您可以使用event.namespaceoff()取消绑定事件处理程序。

$(document).on('scroll.something', function() {
    if ($(this).scrollTop() >= $('#page2').position().top) {
        //Do something

        //Unbind the event
        $(document).off('scroll.something')
    }
})

答案 1 :(得分:0)

您可以使用此代码来实现所需的输出。

var checkonce = false;
$(document).on('scroll', function() {
    if($(this).scrollTop()>=$('#page2').position().top){
       if(checkonce == false) {
         alert("trigger");
         checkonce = true;
       }
    }
});

答案 2 :(得分:0)

在第一个off到达后,您document可以scroll滚动事件。

编辑:如果您为活动命名,也会更好,这将有助于我们使用该名称删除特定活动。 (Satpal already mentioned this in his answer before me, I am improving my answer standard as well.

$(document).on('scroll.Page2ScrollEvent', function() {
    if($(this).scrollTop()>=$('#page2').position().top){

     $(this).off('scroll.Page2ScrollEvent'); // remove specific scroll event.

     alert("trigger");
    }
})