javascript - 单击嵌套 div 外部时如何切换子 div 手风琴类?
问题描述
希望我能解释我想要完成的工作。我正在制作多个手风琴。我为每个 Accordion 框创建了一个切换开关。
当我单击父 div “手风琴”时,它应该将活动类添加到手风琴内容 div
但是,我不希望我不知道我在这里做错了什么。我想单击“accordion__top”栏并仅切换内容类。
但我有一些嵌套问题。
另外,如果我切换下一个手风琴,如何删除以前的活动课程?
我的代码:
(() => {
const Accordions = document.querySelectorAll('.accordion');
if (!Accordions.length) {
return;
}
const handleAccordion = accordion => {
const AccordionContent = accordion.querySelector('.accordion__content');
AccordionContent.classList.toggle('accordion__content--active');
console.log(accordion);
};
Accordions.forEach((accordion, index) => {
const bindAccordion = handleAccordion.bind(null, accordion, index);
accordion.addEventListener('click', bindAccordion);
});
})();
HTML:
<div class="accordion">
<div class="accordion__box accordion__box--tertiary">
<div class="accordion__top">
<h2 class="accordion__title">Join the collab</h2>
<span class="accordion__toggle accordion__toggle--primary"></span>
</div>
<div class="accordion__content">
<p>Coolhaven Collab heeft wil zoveel mogelijk partners in de performance arts aanhaken. Hoe meer hoe beter. <br />
Ben je coach, heb je een culturele locatie in Coolhaven of geef je bijvoorbeeld dans, zangof theater lessen? Laat je gegevens achter, dan nemen wij contact met je op.</p>
</div>
</div>
</div>
解决方案
我很难理解您要达到的目标。
您提到要单击“手风琴”类来切换内容,并且您在下面提到要单击“手风琴__top”来切换内容。
你不提到什么不起作用?
编辑,更新片段
(() => {
const Accordions = document.querySelectorAll('.accordion__box');
if (!Accordions.length) {
return;
}
const handleAccordion = accordion => {
const OtherAccordions = document.querySelectorAll('.accordion__content--active');
OtherAccordions.forEach((a, index) => {
a.classList.remove("accordion__content--active");
});
const AccordionContent = accordion.querySelector('.accordion__content');
AccordionContent.classList.toggle('accordion__content--active');
};
Accordions.forEach((accordion, index) => {
const bindAccordion = handleAccordion.bind(null, accordion, index);
accordion.addEventListener('click', bindAccordion);
});
})();
.accordion__content{
height:0;
overflow:hidden;
}
.accordion__content--active{
height:auto;
}
<div class="accordion">
<div class="accordion__box accordion__box--tertiary">
<div class="accordion__top">
<h2 class="accordion__title">Join the collab</h2>
<span class="accordion__toggle accordion__toggle--primary"></span>
</div>
<div class="accordion__content">
<p>Coolhaven Collab heeft wil zoveel mogelijk partners in de performance arts aanhaken. Hoe meer hoe beter. <br />
Ben je coach, heb je een culturele locatie in Coolhaven of geef je bijvoorbeeld dans, zangof theater lessen? Laat je gegevens achter, dan nemen wij contact met je op.</p>
</div>
</div>
<div class="accordion__box accordion__box--tertiary">
<div class="accordion__top">
<h2 class="accordion__title">Join the collab</h2>
<span class="accordion__toggle accordion__toggle--primary"></span>
</div>
<div class="accordion__content">
<p>Coolhaven Collab heeft wil zoveel mogelijk partners in de performance arts aanhaken. Hoe meer hoe beter. <br />
Ben je coach, heb je een culturele locatie in Coolhaven of geef je bijvoorbeeld dans, zangof theater lessen? Laat je gegevens achter, dan nemen wij contact met je op.</p>
</div>
</div>
</div>
ps 对小提琴感到抱歉,脑子有问题
推荐阅读
- python - 过滤最大日期小于另一个日期
- django - 条件下需要 Django 表单字段
- angular - 如何在解析器中使用 ngrx
- c - 运行程序时出现“分段错误(核心转储)”
- python - 使用一定数量的转义引号解析用户输入
- elasticsearch - 如何将具有大 int 列的数据导入弹性搜索?
- python - Pyspark从向量列到doubleType的转换
- sql-server - SQL Server 2014 数据库邮件未发送
- java - 如何修复'元素 ns1:WS_PersonaGetActEmpresarial.Execute 有一个相对命名空间:ns1="DGI_Modernizacion_Consolidado
- machine-learning - GridSearch 和 Keras 的不同指标:实际返回的是哪一个