$(window).scroll(function() {
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
// do something
console.log("Haven't scrolled in 250ms!");
}, 250));
});
최신 정보
jQuery의 기본 이벤트 처리기 를 향상시키기 위해 확장 을 작성했습니다 on
. 하나 이상의 이벤트에 대한 이벤트 핸들러 함수를 선택한 요소에 연결하고 이벤트가 지정된 간격 동안 트리거되지 않은 경우 핸들러 함수를 호출합니다. 이는 크기 조정 이벤트 등과 같이 지연 후에 만 콜백을 실행하려는 경우에 유용합니다.
github-repo에서 업데이트를 확인하는 것이 중요합니다!
https://github.com/yckart/jquery.unevent.js
;(function ($) {
var on = $.fn.on, timer;
$.fn.on = function () {
var args = Array.apply(null, arguments);
var last = args[args.length - 1];
if (isNaN(last) || (last === 1 && args.pop())) return on.apply(this, args);
var delay = args.pop();
var fn = args.pop();
args.push(function () {
var self = this, params = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(self, params);
}, delay);
});
return on.apply(this, args);
};
}(this.jQuery || this.Zepto));
추가 매개 변수를 마지막으로 전달할 수 있다는 점을 제외하고는 다른 on
또는 bind
-event 핸들러 와 같이 사용하십시오 .
$(window).on('scroll', function(e) {
console.log(e.type + '-event was 250ms not triggered');
}, 250);
http://yckart.github.com/jquery.unevent.js/
(이 데모는 resize
대신을 사용 scroll
하지만 누가 신경 쓰나요?!)