У меня есть функция js scrollToTop()
, которая вызывает jQuery animate для анимации свойства scrollTop
, подобного этому
function scrollToTop(){
$('html, body').animate({ scrollTop: 0 }, {
'duration':500,
'step':function(){
console.log('step',jQuery.fx.interval);
}
});
}
У меня есть 2 ссылки, каждая из которых имеет свой обработчик .click
, внутри которого вызывается функция scrollToTop
. Когда я вызываю его по одной ссылке, анимация плавная и происходит за 13–15 шагов, при вызове из другого обработчика ссылок анимация прерывистая и происходит за 2–3 шага. jQuery.fx.interval
- 13 в обоих случаях.
Что еще может заставить jQuery выполнять анимацию за меньшее количество шагов?
Изменить:
По запросу, обработчики:
$('.panel-item').click(function(e){
var item = $(this);
if ($(item).hasClass('wa_reset'))
$items.removeClass('active'); // this is declared earlier in the code $items = $('.panel');
scrollToTop();
});
$('.scroll-top').click(function(e){
scrollToTop();
});
Никакие другие обработчики не прикреплены к ссылкам.
Также приятно отметить, что то же самое происходит с другими анимациями на сайте и во всех браузерах. Например, слайдер изображения иногда перемещается к следующему изображению за 20 шагов, а по другим - за 2-3 шага. Наиболее последовательным сценарием для репликации проблемы был сценарий, описанный ранее с функцией scrollToTop.