簡體   English   中英

簡單的手風琴不起作用,因為處理程序一次觸發 2 次

[英]Simple accordion doesn't work because handler fires 2 times at once

我正在嘗試創建一個非常簡單的手風琴。

索引.html

    
    <div class="container">

        <div class="accordian">
            <div class="title">Title</div>
            <div class="body">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Corrupti mollitia maxime ab. Possimus est optio 
        </div>
        <div class="accordian">
            <div class="title">Title</div>
            <div class="body">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Corrupti mollitia maxime ab. Possimus est optio 
        </div>

    </div>

main.js

let accordians = document.querySelectorAll(".accordian")


const toggle = e => {
    if (e.target.nextElementSibling.classList.length < 2) {
        e.target.nextElementSibling.classList.add("hidden")
        console.log("1:",e.target.nextElementSibling.classList)
    }
    else {
        e.target.nextElementSibling.classList.remove("hidden")
        console.log("2:",e.target.nextElementSibling.classList)
    }
}

accordians.forEach((obj) => {
    obj.children[1].classList.add("hidden")
    obj.addEventListener('click', e => { toggle(e) }, false)
})

第一個手風琴沒有任何問題,但是當在“切換”上單擊第二個時,function 立即被觸發兩次,沒有任何區別。 有什么線索嗎?

首先,您不需要為 classList 編寫切換 function,因為它已經存在。

其次,您的<div class="body">節點需要有一個結束</div>標記。

 let accordians = document.querySelectorAll(".accordian") accordians.forEach((obj) => { obj.children[1].classList.add("hidden") obj.addEventListener('click', e => { e.currentTarget.children[1].classList.toggle("hidden") }, false) })
 .hidden { display: none; }
 <div class="container"> <div class="accordian"> <div class="title">Title</div> <div class="body">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Corrupti mollitia maxime ab. Possimus est optio </div> </div> <div class="accordian"> <div class="title">Title</div> <div class="body">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Corrupti mollitia maxime ab. Possimus est optio </div> </div> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM