Javascript 整个滚动后的jQuery回调函数

Javascript 整个滚动后的jQuery回调函数,javascript,jquery,callback,Javascript,Jquery,Callback,我将一些函数绑定到jquery的“滚动”事件。为此: $window.bind('scroll', function(){ fn1(...); afterScroll(); // function which should fired after whole scrolling. }) 问题是,我希望在所有滚动迭代之后启动“afterScroll()”函数。但是我认为当用户滚动一次时,事件函数会被触发几次(我用一些警报测试了这一点) a

我将一些函数绑定到jquery的“滚动”事件。为此:

$window.bind('scroll', function(){ 
        fn1(...);
        afterScroll(); // function which should fired after whole scrolling.            
})
问题是,我希望在所有滚动迭代之后启动“afterScroll()”函数。但是我认为当用户滚动一次时,事件函数会被触发几次(我用一些警报测试了这一点) afterScroll()应该在滚动完成后添加一个简短的动画

例如:

有人有主意吗?谢谢

问候,
Yannick

如果我没弄错,只需在最后设置超时,如果滚动继续,请清除超时

setTimeout(1000, function(){ afterScroll(); });

如果我没弄错的话,只需在最后设置超时,如果滚动继续,请清除超时

setTimeout(1000, function(){ afterScroll(); });

很难说用户何时完成了滚动,而且没有这样的事件。您必须自行确定用户何时“完成”滚动。有些用户可能滚动得很慢,但仍会认为它是一个滚动条。类似于

var scrolltime = false;
$window.scroll(function () {
   fn1(...);
   if (scrolltime) {
      clearTimeout(scrolltime);
   }
   //You consider 500 MS between scrolls to be "done" with scrolling.
   scrolltime = setTimeout(afterScroll, 500);
});

很难说用户何时完成了滚动,而且没有这样的事件。您必须自行确定用户何时“完成”滚动。有些用户可能滚动得很慢,但仍会认为它是一个滚动条。类似于

var scrolltime = false;
$window.scroll(function () {
   fn1(...);
   if (scrolltime) {
      clearTimeout(scrolltime);
   }
   //You consider 500 MS between scrolls to be "done" with scrolling.
   scrolltime = setTimeout(afterScroll, 500);
});
您需要返回到
afterScroll

基本上,除最后一个函数外,debounce将丢弃所有对该函数的重复调用,您只需设置一个阈值来告诉它“重复”是什么

以下是油门/去盎司功能的示例。非常好而且有用。我通常会将其包含在我的项目中。

您需要返回到
afterScroll

基本上,除最后一个函数外,debounce将丢弃所有对该函数的重复调用,您只需设置一个阈值来告诉它“重复”是什么

以下是油门/去盎司功能的示例。非常好而且有用。我通常将其包含在我的项目中。

可能重复的--请在提出新问题之前使用搜索。可能重复的--请在提出新问题之前使用搜索。