Michael Michael - 2 months ago 15
jQuery Question

bootstrap.js Accordion Collapse / Expand

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

in
from the
accordion-body
but that does not seem to collapse.

$(".accordion-body").each(function(){
if($(this).hasClass("in")) {
$(this).removeClass("in");
}
});


Also whenever or whatever I use the
.collapse
method on, I get a javascript error saying that object has no method collapse.

Answer

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');
Comments