如何在一段时间内将多个jQuery事件压缩/整理成一个事件?

时间:2011-09-22 18:57:07

标签: jquery events

我想在一段时间内将多个事件压缩成一个事件。我不需要为鼠标移动和页面滚动这些常见的事情重复调用我的绑定函数。如果有一个排队的事件要发射,最多每半秒一次。

为了更具体的例子:

假设我绑定了jQuery(...)。scroll(),其功能有些昂贵。当用户滚动页面时,这将被调用数百次,可能数千次。我希望将所有这些事件压缩为每0.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的事件被发送到注册的处理程序/回调。没有先前的事件被发送。
BTW,几个月前我在某个地方发现了一个jQuery插件,专门做了这个并且有一些不错的功能,但现在我再也找不到它或任何类似的插件。我宁愿找到一个有效的插件,而不是重新发明轮子并将解决方案整合在一起(但我会接受黑客攻击)。

1 个答案:

答案 0 :(得分:0)

介绍scrollstartscrollend事件的

Here is a jQuery plugin(不是我)。您可以通过修改latency参数来更改函数内的时间延迟。我在当前项目中使用它,它工作得很好。