Как удалить класс для всех других элементов, кроме элемента, который был нажат - PullRequest
0 голосов
/ 01 февраля 2019

Здравствуйте! Я хочу удалить класс для всех других элементов, кроме элемента, по которому щелкнули.

мой код выглядит так, но я не могу найти решение

const elements = document.querySelectorAll(".element");

function toggleOpen() {
    this.classList.toggle('open');
    elemets.forEach(ele => {
        ele.classList.remove('open'); // buts this removes the class from all 
       the elements I am looking for something that removes the class on just 
       the other one element containing the class except on the clicked one.
    }) 
}

elements.forEach(ele => ele.addEventListener('click', toggleOpen));

1 Ответ

0 голосов
/ 01 февраля 2019

Вы были действительно близки, просто используйте предложение if в цикле forEach, чтобы пропустить элемент, на который вы щелкнули, по сравнению с this, также у вас была опечатка в функции:

const elements = document.querySelectorAll('.element');

function toggleOpen() {
    this.classList.toggle('open');
    elements.forEach(ele => {
        if (ele !== this) ele.classList.remove('open');
    });
}

elements.forEach(ele => ele.addEventListener('click', toggleOpen));
.element { color: red; }
.open { color: green; }
<button class="element">1</button>
<button class="element">2</button>
<button class="element">3</button>
<button class="element">4</button>
...