Как определить, когда прокрутка закончилась в Jquery?

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

Это функция, которую я использую

$(window).on('scroll', function() {
   existingFunction();
   //code to be executed when the scroll has finished
});

Есть ли какое-то событие или что-то, что я могу проверить, завершилась ли прокрутка?


person Community    schedule 27.10.2017    source источник
comment
Проверьте этот вопрос: stackoverflow.com/questions/3701311/   -  person justDan    schedule 27.10.2017
comment
@DanielD с этим я, по сути, устанавливаю таймер после завершения действий для выполнения функции?   -  person    schedule 27.10.2017
comment
Ага, мне так кажется. Таким образом, вы можете использовать его следующим образом: jsfiddle.net/j2grezwL/2 (запустите консоль, чтобы увидеть, как он вызывает функцию)   -  person justDan    schedule 27.10.2017


Ответы (1)


при прокрутке происходит, когда вы прокручиваете, поэтому, если вы хотите проверить, останавливается ли пользователь для прокрутки, вам нужно использовать таймеры.

если задержка в 1 секунду не подходит, просто измените ее, но это основная идея

var now = null;

function startInterval(){
 var interval = setInterval(function(){
    if(Date.now() > now +1000){
        clearInterval(interval)
        now = null;
        existingFunction();
    }
  },1000)
}
function existingFunction(){
 console.log('finish')
}
$(window).on('scroll', function() {
  if(now === null){
     now = Date.now()
     startInterval()
  }
  else{
  now = Date.now()
  }

});

person Amit Wagner    schedule 27.10.2017