【发布时间】:2023-01-21 00:35:05
【问题描述】:
我试图创建一个嵌套的可折叠<div>。
我面临的问题:当我在加载页面后第一次尝试单击第二个<div> 时,它不起作用。然而,如果我们尝试点击第一个 <div>,它会完美运行。
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>
【问题讨论】:
-
在 CSS 中使用
+而不是~。否则,每个可折叠的<div>将仅在没有.hide-content兄弟元素时显示任何地方在它之前。如果你想给他们看只要可折叠<div>之前的兄弟与.hide-content不匹配。
标签: javascript html css