2011-12-19 4 views
1

私はこの要素をスクロールして非表示のコンテンツを表示するpluginを作成しています。jquery.animateとjquery.scrolltopでコンテンツを垂直方向にスクロール

しかし、私は番号7,8に到達するために、コンテンツをスクロールして、私は番号5に到達するだけで、前の一歩をバックにスクロールしたいとき、私は、例えば、右

  1. それを作ることができません6ですが、スクロールしての番号1,2に到達します。それが誤って番号1,2まで到達した後、私は再びmoreボタンをクリックしたときに

  2. 、それは番号8,9に到達するためにまっすぐ下にスクロールします。

どのように修正できますか?ここで

は、問題が変数scroll_amountある

(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

、プラグインのコードです。まず、ネガを渡すので、常に上にスクロールします。スクロール量。あなたはそれをしたくありません。次に、アニメーションの前にスクロール量を変更するのではなく、スクロール量を変更する必要があります。補正のための

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

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

感謝そんなに、mrtsherman。私はちょうどもう一つの問題に遭遇しました - スクロールバーがコンテンツの一番下に来たときに 'scroll_amount'が増えるのを止める方法はありますか?ありがとう! – laukok

+0

申し訳ありませんが、私は 'scroll_amount'がスクロールがコンテンツの先頭に来るか、またはコンテンツの先頭に来ると、それを止めることはできますか?ありがとう。 – laukok

+1

インクリメントまたはデクリメントする前に 'scroll_amount'の値をチェックする必要があります。 'scrollTarget [0] .scrollHeight'は上限を取得し、下限は' 0'を返します。これには小さなバグがありますが、今問題を解決するのに十分なはずです。 http://jsfiddle.net/CxbYf/4/ – mrtsherman

関連する問題