Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将多个jQuery事件压缩/整理为一个延时事件?_Jquery_Events - Fatal编程技术网

如何将多个jQuery事件压缩/整理为一个延时事件?

如何将多个jQuery事件压缩/整理为一个延时事件?,jquery,events,Jquery,Events,我想将多个事件压缩为一个时间延迟上的单个事件。我不需要为鼠标移动和页面滚动等非常常见的事情重复调用绑定函数。如果有排队事件要触发,最多每半秒一次就足够了 为了更具体的例子: 假设我绑定到jQuery(…).scroll(),使用一个稍微昂贵的函数。当用户滚动页面时,这将被调用数百次,甚至数千次。我想将所有这些事件压缩成每.5秒一次的事件调用,在.5秒过去后将最近的事件发送给处理程序,并忽略以前可能触发的事件 视觉上: 15:20:35.000-用户滚动事件。计时器启动。已存储新事件 15:20

我想将多个事件压缩为一个时间延迟上的单个事件。我不需要为鼠标移动和页面滚动等非常常见的事情重复调用绑定函数。如果有排队事件要触发,最多每半秒一次就足够了

为了更具体的例子:

假设我绑定到jQuery(…).scroll(),使用一个稍微昂贵的函数。当用户滚动页面时,这将被调用数百次,甚至数千次。我想将所有这些事件压缩成每.5秒一次的事件调用,在.5秒过去后将最近的事件发送给处理程序,并忽略以前可能触发的事件

视觉上:

  • 15:20:35.000-用户滚动事件。计时器启动。已存储新事件
  • 15:20:35.020-用户滚动事件。替换存储的事件
  • 15:20:35.100-用户滚动事件。替换存储的事件
  • 15:20:35.371-用户滚动事件。替换存储的事件
  • 15:20:35.500-计时器过期。15:20:35.371的事件被发送到注册的处理程序/回调。未发送任何早期事件
顺便说一句,几个月前我在某个地方找到了一个jQuery插件,它确实做到了这一点,并且有一些很好的特性,但现在我再也找不到它或任何类似的插件了。我更愿意找到一个可以工作的插件,而不是重新发明一个轮子并破解出一个解决方案(但我会接受破解)。

(不是我自己)引入了
scrollstart
scrollend
事件。您可以通过修改
latency
参数来更改函数内部的时间延迟。我正在当前的一个项目中使用它,它非常有效