2010-11-19 6 views
1

私はこの小さな小さなディテールを数時間にわたって使いこなしましたが、ソリューションが本当に簡単であると確信していますが、やっと諦めました。jQueryのアニメーションはクリックでダウンしますが、クリックしてもバックアップされません

divにoverflow:hiddenという名前のパネルがあり、機能が有効になる前に表示されません。 ".click"ボタンをクリックすると、アドレスdivが隠れた領域から見えるようにスライドします。これまでのところ、これはうまくいきますが、なぜ2回目のクリックでそれが戻ってこないのかわかりません。

$(".click").click(function(){ 
     $(".address").animate({top:"0"},{duration:200}); 
      }, function() { 
     $(".address").animate({top:"-55px"},{duration:200}); 
    }); 

誰も私にこれに対する解決策を説明できますか?それはおそらく明らかな解決策ですが、私はそれを理解できません。このような

+0

訪問このURL: http://stackoverflow.com/questions/23138728/how-to-make-two-functions-react-on-a-click?answertab=oldest#tab-top theres良い説明 – Junske

答えて

3

(ちょうどあなたの最初の関数を使用しているのではなく.click())2つ(またはそれ以上)の機能間のサイクルに.toggle()あります、:

$(".click").toggle(function(){ 
    $(".address").animate({top:"0"},{duration:200}); 
}, function() { 
    $(".address").animate({top:"-55px"},{duration:200}); 
}); 
+0

私は各アニメーション()の前にそこにstop()をスローしたいので、余分なクリックはコンテナをバウンスさせず、束縛しないでください。 –

+0

@Surreal - これは短期間で、アニメーションのバックログを大量に作成するのは難しいでしょう。それ以外の場合は '.stop()'が良い考えです。 – user113716

+0

Heh、私は期間についても考えなかった。私はまさに弾力のあるアニメーションを抱いています。 :) –

0

はここで楽しいアプローチです。

$(".click").click(function() { 
    var idx = 0; 
    return function() { 
     $(".address").animate({top: (idx = ++idx % 2) ? 0 : -55}, {duration: 200}); 
    }; 
}()); 

例:http://jsfiddle.net/jSsgM/1/

@Nick's solutionは、よりクリーンで賢明である、そしてあなたは、より複雑な何かをやっているつもりなら、特に使用する必要があります。

関連する問題