2012-09-09 126 views
1

我想要顯示/隱藏訂單表單的動畫除了一個問題以外完美工作,表單不會在向下滑動時隱藏,其中一部分仍然可見。slideDown不會「隱藏」元素

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()但是,這並不按預期工作,它禁用這是需要一個在了slideDown動畫整齊的抽屜(正確的字?)就像效果一樣。

謝謝!

+1

作了[小提琴](http://jsfiddle.net/gRh3P/)。什麼是CSS? –

+1

嘗試將slideDown()更改爲slideUp(),http://jsfiddle.net/2yrj6/ – Guilherme

回答

0

我看到你打電話$(this).parents('.order-form').prev('.post-content').css('display', 'none');一個回調函數裏面是什麼。除$(this)不再是關閉按鈕。這是隱藏的元素。嘗試在點擊回調的第一行中聲明var $this。然後使用$this而不是$(this)

其他說明: 爲了獲得更好的性能,您應該做parents('.post')而不是parents()。 您可以使用.hide()而不是.css('display', 'none')