2017-01-31 3 views
2

Я пытаюсь выполнить определенную задачу, когда пользователь прокручивается в определенную область.Получите scrollTop при быстрой прокрутке

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

Если, однако, пользователь прокручивается быстрее, scrollTop кажется только захваченным, когда прокрутка замедляется до нормальной скорости - это означает, что пользователь может полностью прокрутить область, где я хочу, чтобы функция запускалась ,

Мне нужно каким-то образом обновить каждую позицию scrollTop на каждой скорости прокрутки.

Я просто с помощью:

$('body').scroll(function(e) 
{ 
    intScrollPoint = $(body).scrollTop(); 
}); 

Есть идеи?

+0

вы пробовали установки скорости прокрутки? – krisph

+0

Я бы рекомендовал использовать функцию [дросселирования] (http://benalman.com/projects/jquery-throttle-debounce-plugin/), которая затем срабатывает гораздо более разумным образом. – evolutionxbox

+0

В качестве примера смотрите здесь http://jsbin.com/copidifiji/1/edit?html,js,output – krisph

ответ

0

дроссельной заслонки может решить вашу проблему,

window.addEventListener('scroll', throttle(callback, 1)); 

function throttle(fn, wait) { 
    var time = Date.now(); 
    return function() { 
    if ((time + wait - Date.now()) < 0) { 
     fn(); 
     time = Date.now(); 
    } 
    } 
} 

function callback() { 
    // do something, 
} 

Для получения более подробной информации, проверить это link

Смежные вопросы