const delegateHandler = (selector, handler) => event => {
const possibleTarget = event.target.closest(selector)
if (possibleTarget) {
event.delegateTarget = possibleTarget
handler(event)
}
}
document.addEventListener('click', delegateHandler('.tab-nav_item', (event) => {
let tabContent = document.querySelectorAll('.tab-content');
let dataTab = event.delegateTarget.getAttribute('data-tab')
tabContent.forEach(elem => {
let dataContent = elem.getAttribute('data-content')
let navTabs = document.querySelectorAll('.tab-nav_item')
navTabs.forEach(elem => {
elem.classList.remove('active')
});
event.delegateTarget.classList.add('active')
if (dataTab == dataContent) {
elem.classList.add('active')
} else {
elem.classList.remove('active')
}
})
Сейчас для того чтобы при клике добавить класс к .tab-nav_item и убрать с остальный мне приходится использовать forEach и задавать переменную navTabs
Есть ли какое то решение которое позволит мне добавить класс на event.delegateTarget и убрать эти классы с остальных похожих элементов?