是否有任何新方法可以检测滚动事件是由用户还是动画创建的

时间:2017-09-07 10:58:39

标签: jquery scroll

我知道有多个 Q 要求这样做。但这些都很老,而且不活跃,是否有任何新的方法或解决方法或想法。

我想要的是区分滚动事件。?

假设我在函数上添加了一个类max-limit并在触发动画后:

$(this).addClass('max-limit');
$('html,body').animate({
  scrollTop: thS.offset().top - window.innerHeight / 2
}, 500);

事情是,在此之后将其移除滚动功能:

$(window).on('scroll',function(){
   $('.thisClass').removeClass('max-limit');
});

但现在因为我的滚动功能导致addClass类自动删除后触发动画,我想要的是仅在用户滚动页面时才删除此类。任何帮助将不胜感激。谢谢你。

1 个答案:

答案 0 :(得分:1)

因为您使用的是jQuery animate,所以您可以使用:

  

:animated Selector:选择运行选择器时动画进度中的所有元素。

因此您的滚动事件将是:

$(window).on('scroll',function(e){
     if (!$('html,body').is(':animated')) {
         $('.thisClass').removeClass('max-limit');
     }
 });