1

うまく機能するアニメーションがあります。しかし、私はそれを元に戻すことはできません。誰かが私にヒントを教えてもらえますか?

$(".arrowclose").click(function() {
    $(".arrow").animate({ left: "218px" }, 1000, "easeOutQuad");                
    setTimeout(function() {
        $(".arrow").addClass("arrow_right arrowopen");
        $(".arrow").removeClass("arrow_left arrowclose");
}, 1000);
});

$(".arrowopen").click(function() {
    $(".arrow").animate({ left: "486px" }, 1000, "easeOutQuad");
    setTimeout(function() {
        $(".arrow").addClass("arrow_left arrowclose");
        $(".arrow").removeClass("arrow_right arrowopen");
    }, 1000);
});
4

3 に答える 3

2

jsBin demo

これを試して、不要なクラスを取り除きます

$(".arrow").click(function() {     
   $(this).stop().animate({ left: $(this).offset().left > 218 ? 218 : 486 }, 1000, "easeOutQuad", function() {
       $(this).toggleClass("arrowopen, arrowclose");
   });
});

編集

これまでのところ、コンテナの入出力を切り替える矢印が必要であることがわかったので、次のようにします。

jsBin demo 2

コンテナの内側に矢印を置きます。

  <div class="wrapcontent">
    Test
    <div class="arrow arrowopen"></div>
  </div>

それに応じたスタイル:

.arrowopen{
  position:absolute;
  right:-20px;
  top:0px;
  cursor:pointer;
  width:20px;
  height:20px;
}
.arrowopen  {background:#cf5;}
.arrowclose {background:#f00;}

.wrapcontent {

 position:absolute;
 width: 300px;
 height:100px;
 background:#888;
 left:-300px;

}

そして、矢印->をクリックして、親コンテナをアニメートします。

$(".arrow").click(function() {  

   $wrapcontent = $(this).closest('.wrapcontent');
   wrapOffset = $wrapcontent.offset().left;

   $wrapcontent.stop().animate({ left: !wrapOffset ? -300 : 0 }, 1000, "easeOutQuad");
   $(this).toggleClass("arrowopen, arrowclose");

});
于 2013-01-21T18:01:57.937 に答える
1

これは、DOM対応(arrowopenクラス)に存在しない要素でクリックイベントを使用しているためです。.on()jQueryメソッド-> http://api.jquery.com/on/を使用する必要があります

于 2013-01-21T17:57:29.413 に答える
0

これを試して:

$(".arrowclose").click(function() {
   $(".arrow").animate({
        left: "218px"
      }, 1000, "easeOutQuad",function(){
        $(".arrow").addClass("arrow_right arrowopen").removeClass("arrow_left arrowclose");
    });
});


$(".arrowopen").click(function() {
    $(".arrow").animate({
        left: "486px"
    }, 1000, "easeOutQuad", function(){
       $(".arrow").addClass("arrow_left arrowclose").removeClass("arrow_right arrowopen");
    });
});

これを試して、役立つかどうかを確認してください。

于 2013-01-21T18:27:34.993 に答える