2012-03-21 8 views
0

「スクロールテキストを追加」機能の実装に問題があります。 CSS"marginTop"をjQueryでインクリメンタルにアニメーションしようとしていますが、毎回リセットされます。どうして?

#outer-frame { 
height:200px; 
overflow:hidden; 
} 

とjQueryで

<a href="#" id="scroll-trigger">More</a> 

<div id="outer-frame"> 
<div id="scroll-frame"> 

.. long text 

</div> 
</div> 

..基本構成をだ

$(document).on("click","#scroll-control",function(e){ 
    (e)preventDefault(); 
    $('.scroll-frame').animate({"marginTop":"-=50px"},1000);  
}); 

。それ以上のことはありますが、私がこれまでに取り除いても、私が期待するようにはうまくいきません。

私は、ユーザーがテキストを50px単位でスクロールできるようにしたいと考えています。

#スクロールトリガをクリックするたびに、.scroll-frameは "リセット"して0から-50pxまでスクロールします。

私は、動的CSSにどちらか動作しませんでしたたび

$(document).on("click","#scroll-control",function(e){ 
    (e)preventDefault(); 
    var newMarginTop = ($('.scroll-frame').css('marginTop')); // should get the new value? 
    newMarginTop -= 50; 
    $('.scroll-frame').animate({"marginTop": newMarginTop },1000);  
}); 

をつかんで試してみました。それはまだゼロからリセットし、スクロールします。私は何を得ていないのですか?私はjQueryのマニュアルとこれを探しています。..

$("#left").click(function(){ 
    $(".block").animate({"left": "-=50px"}, "slow"); 
}); 

...左に徐々に、より多くのボックスを移動します。なぜ私の状況は違うのですか?

+0

'(E)でpreventDefault()へ

(e)preventDefault(); 

変更するには、この間違った方法でイベントオブジェクトを使用していますか? – Dogbert

+0

@dogbert - まあ、そうです。このスクロールウインドウは、ユーザがページを下にスクロールするときにユーザに続く「スティッキー」ユーティリティサイドバーに表示されます。私がクリックイベントでpreventDefaultをしなかった場合(falseも返すことができます)、ユーザがをクリックすると、ページは一番上にジャンプします。それとも、それが問題かもしれないと言っていますか? –

答えて

0
  1. を起こればあなたのanimate()プロパティは、あなたがいる場合には、これらの

    から=記号を削除

    • animate({"marginTop":"-=50px"}
    • animate({"left": "-=50px"}

    無効ですstring.replaceを使用しますしようとする新しい値を50ピクセル以下に設定すると、このようなことを試すことができます。 `;

    animate({"marginTOp" : $(this).css("marginTop")-50 }); 
    
  2. あなたはe.preventDefault();

+0

ありがとう。あなたはpreventDefaultについて正しいです。私はちょうど偽の返事から切り替えた、私はそれを台無しにした。 jQueryサイトからの直接のアニメーションはなぜ無効ですか? $( "#right")click(function(){ $( "。ブロック")アニメーション({"left": "+ = 50px"}、 "slow"); }); これはanimate()のものです。定義! –

関連する問題