2014-10-12 3 views
0

Нужна помощь, ребята, поэтому у меня есть следующий код, он распознает, прокручивается ли пользователь вниз или вверх, а затем прокручивает редактируемый div вниз или вверх. Я анимирую редактируемое шоу div и хвастаюсь, но когда я просматриваю страницу, функция выполняет много раз, и это мешает анимации, вызывающей задержку. Как заставить функцию выполнять только один раз при прокрутке?jquery - функция выполняется несколько раз при прокрутке страницы

var position = $(window).scrollTop(); 

$(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 
    if(scroll > position) { 
     $("#textarea").animate({'top': '-75' + 'px'}, 500); 
    } else { 
     $("#textarea").addClass('fixed').animate({'top': '75' + 'px'}, 500); 
    }; 
    position = scroll; 
}); 

Вот скрипка: http://jsfiddle.net/s92e88Le/

+0

Вы можете посмотреть на scrollstart и scrollstop событий – xShirase

ответ

0

Сделать работу с этим:

var position = $(window).scrollTop(); 

$(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 
    var isWorking = 0; 

    if(scroll > position) { 
     $("#textarea").animate({'top': '-25' + 'px'}, 70); 
    } else { 
     if(isWorking == 0) { 
      isWorking = 1; 
      $("#textarea").addClass('fixed').animate({ 
       'top': '75' + 'px'}, 
       70, function() { 
       isWorking = 0; 
      }); 
     } 
    }; 
    position = scroll; 
}); 
Смежные вопросы