Reputation: 2220
I am trying to make an accordion with only a few items that expand with child elements and 2 items that do not have child elements that would close anything that is open.
I have a fiddle setup here
You can see on item #3 there is content in the .accordion-inner div but I do not want that displayed. Also you will see on item #4 there is no .accordion-inner inside #collapseFour which breaks the accordion completely.
Question 1: Is this possible with the Twitter Bootstrap accordion?
Question 2: Is there a better way of going about this process?
Code:
<div class="accordion" id="accordion2">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
Collapsible Group Item #1
</a>
</div>
<div id="collapseOne" class="accordion-body collapse in">
<div class="accordion-inner">
Anim pariatur cliche...
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
Collapsible Group Item #2
</a>
</div>
<div id="collapseTwo" class="accordion-body collapse">
<div class="accordion-inner">
Anim pariatur cliche...
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">
Collapsible Group Item #3
</a>
</div>
<div id="collapseThree" class="accordion-body collapse">
<div class="accordion-inner">
This is where i do not need child elements
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseFour">
Collapsible Group Item #4
</a>
</div>
<div id="collapseFour" class="accordion-body collapse">
</div>
</div>
</div>
Upvotes: 0
Views: 4103
Reputation: 54629
How about this, I added an attribute to tell the links to close all open tabs and used this jQuery function:
$('a[data-close]').click(function () {
$($(this).data('parent')).find('.in').collapse('toggle');
});
This will give you the nice slide toggle effect.
Chek out the fiddle
Upvotes: 0
Reputation: 311
Non- Jquery Solution
Try this updated code here.
The 3rd accordion inner will not expand when clicked. And the shown accordion-inner will collapse.
Upvotes: 0
Reputation: 17324
jsFiddle I believe this is exactly what you are looking for.
just hide them using the proper functions.
$('#collapseFour').on('show', function () {
$('#collapseFour').collapse('hide');
});
$('#collapseThree').on('show', function () {
$('#collapseThree').collapse('hide');
});
Upvotes: 2
Reputation: 4072
If you don't mind that it won't collapse the other areas when you click on it, you could just remove the href="#collapseThree" element from the tag
Upvotes: 0