its*_*sme 18 javascript jquery scroll
如果我想在页面滚动上绑定一个事件,我可以使用scroll();.
但scroll()结束时如何开火?
我想重现这个:
$(window).scroll(function(){
//do somenthing
});
$(window).scrollSTOPPED(function(){ //--> when i'm scrolling then i stop to scrolling (so NOT when page scrollbar is at the end top or bottom :)
//do somenthing else
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Jas*_*ing 43
$.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));
});
};
Run Code Online (Sandbox Code Playgroud)
从最后一个滚动事件开始250毫秒后,这将调用"scrollStopped"回调.
http://jsfiddle.net/wtRrV/256/
function onScrollStopped(domElement, callback) {
domElement.addEventListener('scroll', _.debounce(callback, 250));
}
Run Code Online (Sandbox Code Playgroud)
function onScrollStopped(domElement, callback, timeout = 250) {
domElement.addEventListener('scroll', () => {
clearTimeout(callback.timeout);
callback.timeout = setTimeout(callback, timeout);
});
}
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/kpsxdcv8/15/
clearTimeout和clearInterval参数不必定义,甚至可以是错误的类型甚至省略.