I\'m trying to create previous / next buttons on each accordion body.
I can\'t figure out a way to collapse / expand a certain section. I tried removing the class <
This works for accordions in Bootstrap 3:
var selector = $('.panel-heading a[data-toggle="collapse"]');
selector.on('click',function() {
var self = this;
if ($(this).hasClass('collapsed')) {
$.each(selector, function(key, value) {
if (!$(value).hasClass('collapsed') && value != self) {
$(value).trigger('click');
}
});
}
});
I'm simulating a click of the other accordion tabs with $(value).trigger('click');
. According to the API you should just be able to use the .collapse()
method i.e. $(value).collapse('hide');
. But it doesn't work for some reason so trigger
it is...
The in
class is just an indicator that a section is open. The Javascript module applies the same inline styles as .in
does, so removing the class is insufficient.
You need to use the module's API to programmatically interact with the accordion, via the .collapse()
method:
$('.accordion-body').each(function(){
if ($(this).hasClass('in')) {
$(this).collapse('toggle');
}
});
Or, you can condense this down to:
$('.accordion-body.in').collapse('toggle');
If you want only to collapse any open sections:
$('.accordion-body').collapse('hide');
If you want only to expanded any closed sections:
$('.accordion-body').collapse('show');