小さなjqueryの方法
$.fn.scrollStopped = function(callback) {
var that = this, $this = $(that);
$this.scroll(function(ev) {
clearTimeout($this.data('scrollTimeout'));
$this.data('scrollTimeout', setTimeout(callback.bind(that), 250, ev));
});
};
最後のスクロール イベントから 250 ミリ秒後に、「scrollStopped」コールバックが呼び出されます。
http://jsfiddle.net/wtRrV/256/
lodash (さらに小さい)
function onScrollStopped(domElement, callback) {
domElement.addEventListener('scroll', _.debounce(callback, 250));
}
http://jsfiddle.net/hotw1o2j/
純粋な js (技術的に最小)
function onScrollStopped(domElement, callback, timeout = 250) {
domElement.addEventListener('scroll', () => {
clearTimeout(callback.timeout);
callback.timeout = setTimeout(callback, timeout);
});
}
https://jsfiddle.net/kpsxdcv8/15/
奇妙な事実
clearTimeout および clearInterval パラメータを定義する必要はなく、間違ったタイプになったり、省略されたりすることさえあります。
http://jsfiddle.net/2w5zLwvx/