Как реализовать на нативном js функционал из jquery?

Как такое сделать без jquery? Проблема в .not() не могу сообразить как его написать )
$(buttons).each((index, element) => {
    $(element).on('click', event => {
        $(element).addClass('active');
        // именно такой порядок нужен
        $(buttons).not(element).removeClass('active');
    })
})
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
@En-Tilza Автор вопроса
Вообщем сделал сам, через костыль с if и повторным добавлением класса.

dropdown(event) {
    event.preventDefault();
    let target = event.currentTarget;

    this.dropdownCloseOther(target.parentNode);

    let dropdown = target.parentNode.querySelector('.custom-select-dropdown');
    dropdown.classList.toggle('active');
}
dropdownCloseOther(not) {
    let isActive = false;
    if( not.querySelector('.custom-select-dropdown').classList.contains('active') ) isActive = true;

    let dropdowns = document.querySelectorAll('.custom-select-dropdown.active');
    dropdowns.forEach(dropdown => {
        dropdown.classList.remove('active');
    })

    if( isActive ) not.querySelector('.custom-select-dropdown').classList.add('active');
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
0xD34F
@0xD34F Куратор тега JavaScript
Seasle
@Seasle Куратор тега JavaScript
Как вариант
if (!('addEventListener' in NodeList)) {
	NodeList.prototype.addEventListener = function (...args) {
		for (const node of this.values()) {
			node.addEventListener(...args);
		}
	}
}

if (!('removeEventListener' in NodeList)) {
	NodeList.prototype.removeEventListener = function (...args) {
		for (const node of this.values()) {
			node.removeEventListener(...args);
		}
	}
}

const elements = document.querySelectorAll('some_selector');
elements.addEventListener('event_type', ...);
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега JavaScript
Получаешь массив элементов и работай с ним, нужному добавь класс, у остальных убери. Придется освоить работу с массивами, иначе никак.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы