javascriptjqueryjquery-uiaccordionjquery-ui-accordion

jQuery UI Accordion Expand/Collapse All


I'm using the jQuery UI Accordion (which does not allow more than one item open at a time) on a project. Using accordion is appropriate since I usually do only want one panel open at a time.

However, I need to offer an "Expand All" link which switches to "Collapse All" when clicked. I don't want to custom write near-identical accordion functionality around this one requirement, so I'd like some JS that will achieve this whilst keeping the Accordion component in use.

Question: What JavaScript/jQuery is required to achieve this whilst still using the jQuery UI "Accordion" component to power the standard functionality?

Here's a fiddle: http://jsfiddle.net/alecrust/a6Cu7/


Solution

  • In the end I found this to be the best solution considering the requirements:

    // Expand/Collapse all
    $('.accordion-expand-collapse a').click(function() {
        $('.accordion .ui-accordion-header:not(.ui-state-active)').next().slideToggle();
        $(this).text($(this).text() == 'Expand all' ? 'Collapse all' : 'Expand all');
        $(this).toggleClass('collapse');
        return false;
    });
    

    Updated JSFiddle Link: http://jsfiddle.net/ccollins1544/r8j105de/4/