1

注文フォームを表示/非表示にしたいアニメーションは、1 つの問題を除いて完全に機能します。フォームが下にスライドしても非表示にならず、その一部がまだ表示されています。

HTML:

<div class="post">
    <div class="post-content">
        <a href="" class="order"></a>
        ...
    </div>
    <div class="order-form">
        <a href="" class="close"></a>
        ...
    </div>
</div>

jQuery:

$(".post .order").click(function () {
          $(this).fadeOut();
          $(this).parents('.post-content').slideUp();
          $(this).parents('.post-content').next('.order-form').show();
          $(this).parents().find('.close').fadeIn();
          return false;
    });
    $(".order-form .close").click(function () {
        $(this).fadeOut();
        $(this).parents('.order-form').slideDown();
        $(this).parents('.order-form').prev('.post-content').slideDown(function(){
            $(this).parents('.order-form').prev('.post-content').css('display', 'none');
        });
        $(this).parents().find('.order').fadeIn();
        return false;
    });

..ご覧のとおり、試してみ.hide()ましたが、期待どおりに機能しません。きちんとした引き出し(正しい言葉ですか?)のような効果に必要なスライドダウンアニメーションが無効になりました。

ありがとう!

4

2 に答える 2

1

私はこのhttp://jsfiddle.net/2yrj6/2/
のようなものを試してみます が、それがあなたが望むものかどうかわかりません

于 2012-09-09T20:22:36.140 に答える
0

$(this).parents('.order-form').prev('.post-content').css('display', 'none');コールバック関数内で呼び出しているようです。ただし、$(this)閉じるボタンではなくなりました。隠していた要素です。$thisクリック コールバックの最初の行でvar を宣言してみてください。次に、$this代わりに使用し$(this)ます。

その他の注意事項:パフォーマンスを向上させるためparents('.post')に、代わりに実行する必要があります。の代わりにparents()使用できます。.hide().css('display', 'none')

于 2012-09-09T20:23:11.490 に答える