我正在使用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”。由于某种原因,节流功能并不火。 (第二个控制台打印是显示,代码经过限制功能)
答案 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)