Javascript jQuery-滚动功能保持触发:请仅触发一次
我有以下jQuery函数,当用户水平滚动超过500像素时,它会触发Javascript jQuery-滚动功能保持触发:请仅触发一次,javascript,jquery,Javascript,Jquery,我有以下jQuery函数,当用户水平滚动超过500像素时,它会触发aTestEvent(): jQuery(document).scroll(function(){ if(jQuery(this).scrollLeft() >= 500){ aTestEvent(); }}); 问题是:我只希望aTestEvent()被触发一次!但是,每次用户滚动回页面的开头,然后再次超过500像素时,aTestEvent()会再次触发 我们如何调整上述代码,使触发器仅在
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')$(文档)。关闭(“滚动”);因此,它在触发事件后关闭。这是真正的阴谋