Search code examples
twitter-bootstraptwitter-bootstrap-3

bootstrap collapse: change display of toggle button icons and text


I am using Twitter Bootstrap to create collapsible sections of text. The sections are expanded when a + button is pressed. My html code as follows:

Demo link

<div class="panel-group" id="accordion">
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#demo">
          <span class="glyphicon glyphicon-chevron-down"></span> Open
        </button>
      </h4>
    </div>
    <div id="demo" class="panel-collapse collapse in">
      <div class="panel-body">
        Contents:Thank you to help me solve the problem, you're a great guy!
      </div>
    </div>
  </div>
</div>

Later, i need to change text, button icons and expand.

Is Open:

<button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#demo">
  <span class="glyphicon glyphicon-chevron-up"></span> Close
</button>

Is Close:

<button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#demo">
  <span class="glyphicon glyphicon-chevron-down"></span> Open
</button>

Solution

  • based on: https://stackoverflow.com/a/16870379/1596547

    $('button span').parent().click(function () {
    if($('button span').hasClass('glyphicon-chevron-down'))
    {
       $('button').html('<span class="glyphicon glyphicon-chevron-up"></span> Close'); 
    }
    else
    {      
        $('button').html('<span class="glyphicon glyphicon-chevron-down"></span> Open'); 
    }
    });