Javascript jQuery-滚动功能保持触发:请仅触发一次

Javascript jQuery-滚动功能保持触发:请仅触发一次,javascript,jquery,Javascript,Jquery,我有以下jQuery函数,当用户水平滚动超过500像素时,它会触发aTestEvent(): jQuery(document).scroll(function(){ if(jQuery(this).scrollLeft() >= 500){ aTestEvent(); }}); 问题是:我只希望aTestEvent()被触发一次!但是,每次用户滚动回页面的开头,然后再次超过500像素时,aTestEvent()会再次触发 我们如何调整上述代码,使触发器仅在

我有以下jQuery函数,当用户水平滚动超过500像素时,它会触发
aTestEvent()

jQuery(document).scroll(function(){
    if(jQuery(this).scrollLeft() >= 500){
           aTestEvent();
 }});
问题是:我只希望
aTestEvent()
被触发一次!但是,每次用户滚动回页面的开头,然后再次超过500像素时,
aTestEvent()
会再次触发


我们如何调整上述代码,使触发器仅在用户滚动超过500像素时第一次发生

您可以使用
打开
关闭
方法:

$(document).on('scroll', function() {
    if( $(this).scrollLeft() >= 500 ) {
        $(document).off('scroll');
        aTestEvent();
    }
});

请注意:此代码段可以“关闭”特定页面上可用的所有滚动事件,但要仅滚动指定的滚动处理程序而不干扰其他滚动处理程序,我们可以使用命名空间。名称空间与CSS类相似,因为它们不是分层的;只有一个名称需要匹配

$(document).on('name1.scroll', function() {
    if( $(this).scrollLeft() >= 500 ) {
        $(document).off('name1.scroll');
        aTestEvent();
    }
});

这就成功了!非常感谢你。我会接受的。另一个方便的技巧是鲜为人知的.one()方法。每隔一段时间就非常有用,但从技术上讲,它不适用于此,因为if()语句-即使if条件为false,它也只会触发一次。@未定义为什么在事件发生前推迟.off?@raam86
off
解除由
on
方法注册的处理程序的绑定,因为OP想要停止收听我使用的
关闭的事件。但为什么不呢:console.log('aTestEvent')$(文档)。关闭(“滚动”);因此,它在触发事件后关闭。这是真正的阴谋