Показать сообщение отдельно
  #1 (permalink)  
Старый 12.11.2014, 12:26
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

JQUERY - конфиликт функция при скроллинге
есть кнопка перемотки вверх-назад, которая первым клик перематывает страницу вверх, запоминаея позицию на странице для возврата.
вторым кликом - происходит возврата сверху страницы в исходное положение на странице (как вконтакте)

хочу добавить обработку событий скролстарт и скролстоп.
для этого использую следующий код
Код:
function scrolled() {
    //do by scroll start
$('.extended-ControlsMenu').hide();
    $(this).off('scroll')[0].setTimeout(function(){
        //do by scroll end
$('.extended-ControlsMenu').show();
        $(this).on('scroll',scrolled);
    }, 1500)
}
$(window).on('scroll',scrolled);
сам по себе код рабочий, сама по себе конпка "вверх-назад" тоже работает.

но, когда коды в скрипт довать коды кнопки и код обработки старт-стоп скроллинга - кнопка перемотки "вверх" работает только в режиме "вверх", а назад - уже не работает.
файрбаг ошибок в скрипте не показывает.

опытным путем установил, что баг возникает изза строчки
Код:
    $(this).off('scroll')[0].setTimeout(function(){
но, что там не так и как исправить - ума не приложу.
если сможете помочь - буду признателен.

полный код скрипта ниже
Код:
jQuery(function($){
	var topLink = $('#top-link');
	topLink.css({'padding-bottom': $(window).height()});
	// если вам не нужно, чтобы кнопка подстраивалась под ширину экрана - удалите следующие четыре строчки в коде
	topLink.toplinkwidth();
	$(window).resize(function(){
		topLink.toplinkwidth();
	});

function scrolled() {
    //do by scroll start
$('.extended-ControlsMenu').hide();
    $(this).off('scroll')[0].setTimeout(function(){
        //do by scroll end
$('.extended-ControlsMenu').show();
        $(this).on('scroll',scrolled);
    }, 1500)
}
$(window).on('scroll',scrolled);


	$(window).scroll(function() {


	    if (jQuery('#top-link').attr('hidden-button') == 'false') {
		if($(window).scrollTop() >= 1) {
			topLink.fadeIn(300).children('a').html('<span id="topicon"></span><span id="text">Наверх</span>').parent().removeClass('bottom_button').addClass('top_button');
		} else {
			topLink.children('a').html('<span id="backicon"></span>').parent().removeClass('top_button').addClass('bottom_button');
		}
	    }
	});
	topLink.click(function(e) {
		if($(this).hasClass('bottom_button')){
			// при нажатии на кнопку «Вниз» переходим туда, где прекратили чтение
			$("body").scrollTo( pos + 'px', 200 );
		} else{
			// определяем и запоминаем координаты того места страницы, откуда был совершен переход наверх
			pos = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
			$("body,html").animate({scrollTop: 0},200);
		}
		return false;
	});
});
Ответить с цитированием