Задержка выполнения функции при скроллинге

Предположим вам нужно выполнять какую функцию при скроллинге окна. Вроди бы задача простейшая. Но нюанс, который портит всю малину — может возникнуть неприятное мерцание из-за того, что функция будет выполняться слишком часто.

Вот рабочее решение на простом примере

  1. $.fn.scrollComplete = function(fn, ms) {
  2.     var timer = null;
  3.     this.scroll(function() {
  4.         if (timer) {
  5.             clearTimeout(timer);
  6.             }
  7.         timer = setTimeout(fn,ms);
  8.         });
  9.     }
  10. $('window').scrollComplete(function(){alert('я проскроллился')}, 5000);