如何让CSS切换像这样?

时间:2013-08-28 09:50:26

标签: jquery css toggle

我正在开发一个网站,在常见问题解答页面上我需要显示此类常见问题解答。 reference

点击(Q)时,(A)应以jquery动画打开。 1问题应该一次开放。

如果点击其他(Q),前一个应该关闭并点击将被打开。

<div class="faqBlock">

    <div class="qa">
        <dt>How do I buy Snoopra?</dt>
        <dd>Just decide whether you want to pay monthly or yearly, click on the buy now button, fill out the payment details and you’re done!</dd>
    </div><!-- qa -->

</div><!-- faqBlock -->

3 个答案:

答案 0 :(得分:0)

请找到您发布的问题的解决方案。我想它可以按照你的要求工作。

http://jsfiddle.net/ardeezstyle/ESLEB/1/

$(document).delegate('.q','click',function(){
    $('.a').hide();
    $(this).next('.a').show();
});

答案 1 :(得分:-1)

你有slideToggle()。请使用它。

$('#clickme').click(function() {
  $('#book').slideToggle('slow', function() {
    // Animation complete.
  });
});

Example

答案 2 :(得分:-1)

它被称为手风琴,最简单的构建方式是:

$('.qa h3').click(function(){
  $(this).next().slideToggle();
});
.qa > *{margin:0; padding:8px 16px;} /* all */
.qa > h3{cursor:pointer; border-top: 1px solid #eee;} /* questions */
.qa > div{display:none;} /* Hide all answers */
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="qa">
  <h3>Question 1</h3>
  <div>answer 1...</div>
  <h3>Question 2</h3>
  <div>answer 2...</div>
  <h3>Question 3</h3>
  <div>answer 3...</div>
</div>

要关闭之前打开过的并切换点击一个:

$('.qa').each(function() {
  
  var $q = $(this).find("> h3"),
      $a = $(this).find("> div");

  $q.click(function() {
    var $qa = $(this).next(); // Get the question's answer
    $a.not($qa).slideUp();    // Close all answers (not the next's one)
    $qa.slideToggle();        // Toggle answer
  });

});
.qa > *{margin:0; padding:8px 16px;} /* all */
.qa > h3{cursor:pointer; border-top: 1px solid #eee;} /* questions */
.qa > div{display:none;} /* Hide all answers */
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="qa">
  <h3>Question 1</h3>
  <div>answer 1...</div>
  <h3>Question 2</h3>
  <div>answer 2...</div>
  <h3>Question 3</h3>
  <div>answer 3...</div>
</div>