admin管理员组

文章数量:1399815

I have made JQUERY Accordions which work fine.

HTML:

<div id="accordion">

<div class="title"><span>Accordian 1</span></div>
<div class="hide">

  <p>hidden content</p>

</div>

<div class="title"><span>Accordian 2</span></div>
<div class="hide">

  <p>hidden content</p>

</div>


<div class="title"><span>Accordian 3</span></div>
<div class="hide">

   <p>hidden content</p>

</div>

<div class="title"><span>Close all the accordions</span></div>

</div>

JQUERY

$(document).ready(function() {

    $('#accordion .hide').hide();
   $('#accordion .title span').click(function(){
           $('#accordion .hide').slideUp();
           $(this).parent().next().slideDown();

           return false;
   });

});

What I would like is when a user clicks an accordion to open it, and then clicks it a second time that it would close.

So 1st click = open, 2 click = close.

How would I go about this?

Thanks

I have made JQUERY Accordions which work fine.

HTML:

<div id="accordion">

<div class="title"><span>Accordian 1</span></div>
<div class="hide">

  <p>hidden content</p>

</div>

<div class="title"><span>Accordian 2</span></div>
<div class="hide">

  <p>hidden content</p>

</div>


<div class="title"><span>Accordian 3</span></div>
<div class="hide">

   <p>hidden content</p>

</div>

<div class="title"><span>Close all the accordions</span></div>

</div>

JQUERY

$(document).ready(function() {

    $('#accordion .hide').hide();
   $('#accordion .title span').click(function(){
           $('#accordion .hide').slideUp();
           $(this).parent().next().slideDown();

           return false;
   });

});

What I would like is when a user clicks an accordion to open it, and then clicks it a second time that it would close.

So 1st click = open, 2 click = close.

How would I go about this?

Thanks

Share Improve this question asked Feb 8, 2014 at 18:11 mickzermickzer 6,3585 gold badges38 silver badges60 bronze badges 2
  • Why not slideToggle() ?? – Krunal Panchal Commented Feb 8, 2014 at 18:18
  • @user2620746 jsfiddle/pranavcbalan/hy4kF/3 – Pranav C Balan Commented Feb 8, 2014 at 18:25
Add a ment  | 

3 Answers 3

Reset to default 2

HTML :

<div id="accordion">
<div class="title"><span>Accordian 1</span></div>
<div class="hide">
  <p>hidden content</p>
</div>
<div class="title"><span>Accordian 2</span></div>
<div class="hide">
  <p>hidden content</p>
</div>
<div class="title"><span>Accordian 3</span></div>
<div class="hide">
   <p>hidden content</p>
</div>
<div class="close"><span>Close all the accordions</span></div>
</div>

Use slideToggle() , to toggle between slideUp and slideDown

$(document).ready(function() {    
   $('#accordion .hide').hide();
   $('#accordion .title span').click(function(){
           $(this).parent().next()
                  .slideToggle()
                  .siblings('.hide').slideUp();
           return false;
   });
    $('.close').click(function(){
        $('#accordion .hide').slideUp();
    });
});

Fiddle Demo

You can use the following solution to make the accordion close on the second click in jQuery:

$("#accordion").accordion({
        heightStyle: "content",
        autoHeight: false,
        clearStyle: true,
        collapsible: true, //this makes the selected tab close on second click
});

Try this:

$('#accordion .hide').hide();
$('#accordion .title span').click(function () {
    $(this).parent().next().slideToggle().siblings('.hide').slideUp();
});

$('#accordion .title span:last').click(function () {
     $('#accordion .hide').slideUp();
});

Fiddle Demo

本文标签: javascriptMake Accordion Close on second click JQUERYStack Overflow