I tried to create a nested collapsible <div>
.
The problem I am facing: when I tried to click the second <div>
the first time after loading the page, it is not working. Whereas, if we try to click the first <div>
, it works perfectly.
document.addEventListener('DOMContentLoaded', function() {
const found = document.querySelectorAll('.collapse-content .collapse-head-content');
for (let i = 0, len = found.length; i < len; i++) {
found[i].addEventListener('click', handler, true);
}
function handler(e) {
const hidden = e.target.classList.contains('hide-content');
if (hidden) {
e.target.classList.remove('hide-content');
}
else {
e.target.classList.add('hide-content');
}
}
});
.collapse-content .collapse-head-content::before {
content: ' ^ ';
cursor: pointer;
}
.collapse-content .hide-content.collapse-head-content::before {
content: ' > ';
}
.collapse-content .hide-content.collapse-head-content~.collapse-body-content {
display: none;
}
<div class="bank-details collapse-content">
<div class="state-name collapse-head-content hide-content">
Click me to collapse / show
</div>
<div class="collapse-body-content">
<div class="collapse-content">
<div class="district-name collapse-head-content hide-content">
District
</div>
<div class="branch-name collapse-body-content">
<a href="#">name</a>
<a href="#">name</a>
<a href="#">name</a>
</div>
</div>
</div>
<div class="state-name collapse-head-content hide-content">
Click me to collapse / show
</div>
<div class="collapse-body-content">
<div class="collapse-content">
<div class="district-name collapse-head-content hide-content">
District
</div>
<div class="branch-name collapse-body-content">
<a href="#">name</a>
<a href="#">name</a>
</div>
</div>
</div>
</div>