Throttle-debounce的事件对象

时间:2013-11-06 15:44:39

标签: javascript scroll jquery throttling

我正在使用Ben Alman的Throttle-debounce插件。

当我打电话给.throttle时:

$(window).scroll($.throttle(250, function() {console.log(1)}));

受限制的功能开火。

但我必须检查是否未触发滚动事件。所以当我这样做时

$(window).scroll( function(event) {
    if (!event.isTrigger) {
        $.throttle(250, function() {console.log(1)});
        console.log(2);
    }
});

结果只得到“2”。由于某种原因,节流功能并不火。 (第二个控制台打印是显示,代码经过限制功能)

1 个答案:

答案 0 :(得分:2)

我从未使用过Ben的插件,但看起来油门插件并没有触发返回一个新功能的功能,该功能每秒只能被触发x次(或其他)。这是有效的,因为在JS函数中是第一类对象,所以函数只能返回一个新函数。

所以如果你想要激活这个功能,你需要调用它,

 var throttledFunc = $.throttle(250, function() {console.log(1)});

 $(window).scroll( function(event) {
    if (!event.isTrigger) {
       throttledFunc(event);
       console.log(2);
    }
  });

你也可以重新考虑你的第一个例子,如

 var throttledFunc = $.throttle(250, function() {console.log(1)});

 $(window).scroll(throttlesFunc);

内部jquery接受你传入的函数引用,当scroll事件触发时,throttlesFunc(event)