Bootstrap basically succeeds in adding / removing CSS classes and its rules. Thus, the structure must be the same so that the effect is the same as that of the div. What you missed was <li class="panel"> on the li sheet that contains the trigger and its corresponding menu. And in your case, you were absent.
BS Code:
//In the below line this is supposed to fetch the active elements //but in your case it did not match anything hence it failed to fetch active elements to make it inactive. var actives = this.$parent && this.$parent.find('> .panel > .in') if (actives && actives.length) { var hasData = actives.data('bs.collapse') if (hasData && hasData.transitioning) return actives.collapse('hide') hasData || actives.data('bs.collapse', null) }
So try:
<ul class="nav nav-stacked" id="accordion1"> <li class="panel"> <a data-toggle="collapse" data-parent="#accordion1" href="#firstLink">Test12</a> <ul id="firstLink" class="collapse panel-collapse in"> <li>SubTest1</li> <li>SubTest1</li> <li>SubTest1</li> </ul> </li> <li class="panel"> <a data-toggle="collapse" data-parent="#accordion1" href="#secondLink">Test2</a> <ul id="secondLink" class="collapse panel-collapse"> <li>SubTest2</li> <li>SubTest2</li> <li>SubTest2</li> <li>SubTest2</li> </ul> </li> </ul>
And since it was intended to be used with a div , you will have to redefine some rules specifically for li , as shown below.
#accordion1 li.panel{ margin-bottom: 0px; }
Demo
source share