scrollTo - плагин jQuery.Прокручивает нормально, но попытка прокрутки назад вверх зазубрена и «застряла» - PullRequest
1 голос
/ 14 июля 2011

Я использую плагин scrollTo и выполняю его в функции обратного вызова метода animate в событии «click».

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

Я не могу показать точное место, где это происходит (не разрешено), но я скопировал код ниже:

// This function finds the first item that has an opacity set to 1 (full)
function moveIt() {
    var theItem = $('.work').filter( function(j) { return $(this).css('opacity') == 1 } ).eq(0);
    $("html").scrollTo( theItem, 350 );
}

$("#work-menu-client a").click(

    function () {

        var val = $(this).attr("href");
        val = val.substring(1, val.length);

        if( val.length ) { 


            $(".work[data-client*='" + val + "']").animate({
                opacity: 1
                }, 350, function() {    
                    // Complete
            });


            $(".work:not([data-client*='" + val + "'])").animate({
                opacity: 0.05
                }, 350, function() {

                    moveIt();

            });


        }

        return false;

    }, 

    function () {
        return false;   
    }

);

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

(Если вы хотите знать, в основном, меню позволяет мне постепенно увеличивать и уменьшать размеры определенных элементов в зависимости от их атрибута, тогда я перехожу к первому случаю, когда непрозрачность не исчезла.)

Любая помощь будет принята с благодарностью.

Я нашел кого-то с подобной проблемой, но она не была решена, и там мало отзывов: JQUERY, scrollTo, после прокрутки вниз страница не позволит мне прокрутиться вверх на секунду ... Y

Большое спасибо, Майкл.

РЕДАКТИРОВАТЬ: На самом деле, я только что заметил, что я тоже не могу прокрутить вниз ... так что, по сути, я застрял в положении, в котором он меня послал.

1 Ответ

3 голосов
/ 17 мая 2012

У меня тоже была эта проблема, но ошибка не была связана с логикой селектора.

Проблема заключалась в том, что я привязывал обработчики щелчков к якору, который вызывал scrollTo более одного раза, не отменяя привязкиСтарые.Я осуществлял загрузку и перерегистрацию обработчиков событий ajax, но не отменял регистрацию старых.Исправление включало в себя вызов $(selector).off() before $(selector).on(...), который мне не нужно было менять, поскольку я все еще хотел поведения.

...