使用jquery.animate和jquery.scrolltop垂直滚动内容

时间:2011-12-19 03:57:47

标签: jquery jquery-animate scrolltop

我正在研究这个plugin,它会滚动一个元素来显示隐藏的内容。

但我无法做到正确,例如,

  1. 当我滚动内容以达到数字7,8 时,我想向前滚动一步,只是为了达到数字5,6 但滚动达到数字1,2

  2. 错误地达到数字1,2 后,当我点击more时,它会直接向下滚动以达到数字8,9 按钮再次。

  3. 我该如何解决?

    这是插件代码,

    (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 个答案:

答案 0 :(得分:1)

问题是变量scroll_amount。首先,它总是滚动到顶部,因为你传递负面!滚动量。你不想那样做。其次,您应该在动画之前而不是之后修改滚动量。

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

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