[英]In a list of accordions How to open the one clicked and close the others when the click is happening on a child element?
[英]Javascript: close all accordions when one is clicked?
我基本上是在嘗試關閉所有手風琴,只打開其中一個被單擊的手風琴。
因此,在短期內,只能保持打開一個選項卡。
這是我到目前為止的內容:
https://jsfiddle.net/gymzfg9r/2/
這是javascript:
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function(){
this.classList.toggle("active");
this.nextElementSibling.classList.toggle("show");
}
}
有人可以為此提供建議嗎?
插入代碼以關閉其他人:
this.classList.toggle("active");
var arr = document.getElementsByClassName("show");
for (j = 0; j < arr.length; j++) {
if(this.nextElementSibling != arr[j])
arr[j].classList.toggle("show");
}
this.nextElementSibling.classList.toggle("show");
這可以完成工作,但是我很確定這是一種糟糕的方法,只是現在還想不起更好的方法
var acc = document.getElementsByClassName("accordion");
var i;
function closeEverything() {
var openElements = document.getElementsByClassName("active");
if(openElements.length) {
for(var i = 0; i < openElements.length; i++) {
openElements[i].nextElementSibling.classList.toggle("show");
openElements[i].classList.toggle("active");
}
}
}
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function(){
if(this.classList.contains('active')) {
this.classList.toggle('active');
this.nextElementSibling.classList.toggle('show');
} else {
closeEverything();
this.classList.toggle("active");
this.nextElementSibling.classList.toggle("show");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.