I am testing the W3Schools example for animated collapsibles.
The sliding/animated collapsible example works OK, but I need to develop a collapsible inside a collapsible (a "recursive collapsible", we could name it).
My modification of the original example just adds a collapsible inside the initial Open Section 1
collapsible that outputs a simple "The Lorem ipsum... etc, thing." text:
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.maxHeight){
content.style.maxHeight = null;
} else {
content.style.maxHeight = content.scrollHeight + "px";
}
});
}
<style>
.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active, .collapsible:hover {
background-color: #555;
}
.content {
padding: 0 18px;
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
background-color: #f1f1f1;
}
</style>
<h2>Animated Collapsibles</h2>
<p>A Collapsible:</p>
<button class="collapsible">Open Collapsible</button>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<p>Collapsible Set:</p>
<button class="collapsible">Open Section 1</button>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
<p>Collapsible inside collapsible:</p>
<button class="collapsible">Open Collapsible inside Collapsible</button>
<div class="content">
<p>The Lorem ipsum... etc, thing.</p>
</div>
</div>
<button class="collapsible">Open Section 2</button>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button class="collapsible">Open Section 3</button>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
How to reproduce the error:
1.- Click on Open Section 1
. Works OK.
2.- Click on Open Collapsible inside Collapsible
. Not working.
A curious detail:
1.- Click on Open Section 1
. Works OK.
2.- Click on Open Collapsible inside Collapsible
. Not working.
3.- Click on Open Section 1
. Works OK (the collapsible closes).
4.- Click on Open Section 1
. Works OK and the inner collapsible is now correctly open.
How could I solve this problem in order to make collapsibles inside collapsibles work OK?
Further notes:
- The not animated collapsible example at W3Schools seems to work OK and not to have this problem when doing it recursive (collapsibles inside collapsibles).