jQuery UI Accordion on ul

Marty Trenouth picture Marty Trenouth · Nov 10, 2010 · Viewed 13.4k times · Source

How do I get the jQuery UI Accordion to work when I need to put a wrapper around each element?

Example HTML:

<ul>
  <li>
     <h3><a href="#">header</a></h3>
     <div>
         Content goes here
     </div>
  </li>
  <li>
     <h3><a href="#">header</a></h3>
     <div>
         Content goes here
     </div>
  </li>
</ul>

I just can't seem to get it to work.

Answer

Stephen picture Stephen · Nov 10, 2010

You cannot make the accordion work with your current markup. Elements must be siblings like this:

<div id="parentAccordionDiv">
    <h3><a href="#">header</a></h3>
    <div>
        Content goes here
    </div>
    <h3><a href="#">header</a></h3>
    <div>
        Content goes here
    </div>
</div>

I stand corrected. I got an accordion to work fine like this:

<script type="text/javascript">
    $(function(){
        $('#accordion').accordion();
    })
</script>
<ul id="accordion">
  <li>
     <h3><a href="#">header</a></h3>
     <div>
         Content goes here
     </div>
  </li>
  <li>
     <h3><a href="#">header</a></h3>
     <div>
         Content goes here
     </div>
  </li>
</ul>