تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ nafise
بستن کامل accordion
جامعه جاوا اسکریپت ایجاد شده در ۱۷ دی ۱۴۰۱

سلام

بعد از هر کلیک که ایتم باز میشه اگه خواستم اون ایتم که روش کلیک شده رو ببندم چه کدی باید بزنم یعنی accordion کامل مثل اولش بسته بشه

سلام دوست عزیز

برای انجام موردی که گفتید باید درون EventListener و جایی که شرط برای activeItem گذاشته شده یک شرط دیگر هم اضافه بشه که activeItem برابر با مقدار currentTarget نباشه و باید در جایی که کلاس open اضافه میشه بجای add از toggle استفاده کرد.

با این دو کار در واقع ما میگوییم که اگر بروی آیتمی کلیک شد که با آیتمی که قبلا درون متغییر (activeItem) گذاشته بودیم یکسان نبودن اون موقع کلاس open رو از اون آیتم حذف کن و قسمت مربوط به toggle هم که واضح هست.

پس کدتون رو باید بصورت زیر باشه:

for (let i = 0; i < items.length; i++) {
    items[i].addEventListener('click', (event) => {
        const current = event.currentTarget
        if (activeItem && activeItem != current) {
            activeItem.classList.remove('open')
        }
        activeItem = current
        current.classList.toggle('open')
    })
}

موفق باشید.

بهترین پاسخ
صادق برزگر ۱۷ دی ۱۴۰۱، ۱۲:۱۶