пожалуйста подскажите, есть вот такие блоки:
<div class='block'>
<button class='button'>Кнопка</button>
<div class='info'></div>
</div>
<div class='block'>
<button class='button'>Кнопка</button>
<div class='info'></div>
</div>
<div class='block'>
<button class='button'>Кнопка</button>
<div class='info'></div>
</div>
и есть вот такой код JS
const button = document.getElementById('button');
const info = document.getElementById('info');
button.onclick = function(){
info.classList.toggle('active');
}
Сейчас работает с помощью id . при клике на кнопку добавляется класс active и блок info показывается.
Как сделать чтобы работало без id? Чтобы по клику на кнопку ,к ближайшему к нему блоку info добавлялся класс active через toggle, а остальные блоки при этом не реагировали.
Понимаю что это как то работает this, но как не понимаю
на чистом js хочу понять как это работает
Выбирай:
this.classList.toggle('active');
event.target.classList.toggle('active');
event.currentTarget.classList.toggle('active');
Хм.. Перечитал вопрос - там не на кнопку надо, а на блок, так что так:
event.target.closest('.block').querySelector('.info').classList.toggle('active')
Только полифилл для closest надо подключить (в зависимости от браузеров).
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости