slideDown不会“隐藏”该元素

时间:2012-09-09 20:02:05

标签: jquery hide slide effect drawer

我希望显示/隐藏订单的动画完美无缺,除了一个问题,表单在向下滑动时不会隐藏,其中一部分仍然可见。

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()但是这没有按预期工作,它禁用了一个整洁的抽屉(右边的单词?)效果所需的滑动动画。

谢谢!

2 个答案:

答案 0 :(得分:1)

我尝试这样的事情http://jsfiddle.net/2yrj6/2/
但我不知道这是不是你想要的

答案 1 :(得分:0)

我看到你在回调函数中调用了$(this).parents('.order-form').prev('.post-content').css('display', 'none');。除此之外,$(this)不再是关闭按钮。它是隐藏的元素。尝试在点击回调的第一行声明var $this。然后使用$this代替$(this)

其他说明: 您应该parents('.post')代替parents()以获得更好的效果。 您可以使用.hide()代替.css('display', 'none')