Прокрутка контента по вертикали с помощью jquery.animate и jquery.scrolltop - PullRequest
1 голос
/ 19 декабря 2011

Я работаю над этим плагином , который прокручивает элемент, чтобы показать скрытое содержимое.

Но я не могу сделать это правильно, например,

  1. , когда я прокручиваю содержимое до чисел 7,8 , и я хочу прокрутить назад на один шаг назад, чтобы достичь чисел 5,6 , но оно прокручивается до достичь числа 1,2 .

  2. после того, как он ошибочно набирает чисел 1,2 , он прокручивается прямо вниз и достигает чисел 8,9 , когда я снова нажимаю кнопку more.

Как я могу это исправить?

Вот код плагина,

(function($){

   $.fn.extend({ 

        scroll_up_down: function(options) {

            var defaults = {
                associateScroller:           '.less',
                scrollTarget:                '.items-thread',
                scrollAmount:                40,
                callback:                     function() {}
            }

            var options =  $.extend(defaults, options);
            var o = options;
            var scroll_amount =  o.scrollAmount;
            var associate_scroller = o.associateScroller


            var $cm = this.click(function(e){

                // Set the varible.
                var object = $(this);
                var scroll_target = $(o.scrollTarget);

                scroll_target.animate({scrollTop:scroll_amount}, 500);

                scroll_amount += o.scrollAmount;


                return false;

            });

            var $cm_2 = $(associate_scroller).click(function(e){

                // Set the varible.
                var scroll_target = $(o.scrollTarget);

                scroll_target.animate({scrollTop:-scroll_amount}, 500);
                scroll_amount -= o.scrollAmount;


                return false;
            });



        }
    });

})(jQuery);

1 Ответ

1 голос
/ 19 декабря 2011

Проблема в переменной scroll_amount.Прежде всего, он всегда прокручивается обратно к вершине, потому что вы проходите в отрицательном!сумма прокрутки.Вы не хотите этого делать.Во-вторых, вы должны изменить количество прокрутки до анимации, а не после нее.

http://jsfiddle.net/CxbYf/2/

scroll_amount = ...;
scroll_target.animate({scrollTop:scroll_amount}, 500);
...