2012-05-22 3 views
0

Я связал некоторые функции с событием 'scroll' jquery. При этом:Функция обратного вызова jQuery после цельной прокрутки

$window.bind('scroll', function(){ 
     fn1(...); 
     afterScroll(); // function which should fired after whole scrolling.    
}) 

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

Например: http://activatedrinks.com/

Кто-то идея? Благодаря

здоровается, Янник

+0

Возможный дубликат [Как вызвать функцию после прокрутки?] (Http://stackoverflow.com/questions/5515551/how-to-call-a-function-after-scroll-has-ended) - - пожалуйста, используйте поиск, прежде чем задавать новый вопрос. –

ответ

0

Если я вас правильно, просто установить тайм-аут, в конце концов, очистить таймаут, если прокрутка продолжается.

setTimeout(1000, function(){ afterScroll(); }); 
3

Сложно сказать, когда пользователь закончил прокрутку, и такого события нет. Вы должны определить, когда пользователь «закончил» прокрутку самостоятельно. Некоторые пользователи могут прокручиваться очень медленно, но все равно считают, что это единственный свиток. Что-то вроде ..

var scrolltime = false; 
$window.scroll(function() { 
    fn1(...); 
    if (scrolltime) { 
     clearTimeout(scrolltime); 
    } 
    //You consider 500 MS between scrolls to be "done" with scrolling. 
    scrolltime = setTimeout(afterScroll, 500); 
}); 
2

вам нужно debounce Обратного звонка afterScroll

в основном дребезга отбрасывать все повторяющиеся вызовы функции, за исключением последнего, все, что вам нужно сделать, это установить порог, чтобы сказать ему, что «repeat» is

здесь source функций дроссельной заслонки/дебюта. очень приятная и полезная библиотека. Я обычно включаю его в свои проекты.

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