Bootstrap 3 collapse change chevron icon on click
Pure CSS.
HTML part:
<a data-toggle="collapse" href="#collapseExample"
aria-expanded="false" aria-controls="collapseExample">
Open/Close collapse
<i class="fa fa-chevron-right pull-right"></i>
<i class="fa fa-chevron-down pull-right"></i>
</a>
The key element here is aria-expanded="false" or "true"
CSS:
a[aria-expanded=true] .fa-chevron-right {
display: none;
}
a[aria-expanded=false] .fa-chevron-down {
display: none;
}
The problem is with your jQuery code not being correct.
You're closing the event handler function early on this line:
$('#serviceList').on('shown.bs.collapse'), function() {
See that second closing parenthesis? That's closing the 'on' function early. Try changing your jQuery to look like this:
$('#serviceList').on('shown.bs.collapse', function() {
$(".servicedrop").addClass('glyphicon-chevron-up').removeClass('glyphicon-chevron-down');
});
$('#serviceList').on('hidden.bs.collapse', function() {
$(".servicedrop").addClass('glyphicon-chevron-down').removeClass('glyphicon-chevron-up');
});
Try this more elegant solution:
$('#serviceList').click(function(){
$(this).find('.servicedrop').toggleClass('icon-chevron-down icon-chevron-up');
});