我在使用本·阿尔曼的节拍插件。
当我这样称呼.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“。由于某种原因,节流函数不是火。(第二次控制台打印将显示代码通过节流函数)
发布于 2013-11-06 15:47:45
我从未使用过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内部接受传递的函数引用,当滚动事件触发时,它执行throttlesFunc(event)操作。
https://stackoverflow.com/questions/19816415
复制相似问题