Подскажите как убрать класс.
Добрый день. Подскажите как убрать класс "active" со всех кнопок кроме нажатой? :-?
Код сейчас такой: let button = document.querySelectorAll('div.modal-body div.list-group button'); [].forEach.call( button, function( item ) { item.addEventListener( 'click', function() { this.classList.add("active"); }); }); |
Artur_Hopf,
let button = document.querySelectorAll('div.modal-body div.list-group button'); let activeItem = button[0]; [].forEach.call( button, function( item ) { item.addEventListener( 'click', function() { activeItem.classList.remove('active'); activeItem = item; activeItem.classList.add('active'); }); }); |
рони,
спасибо большое :thanks: , но можно пояснить как это работает. let button = document.querySelectorAll('div.modal-body div.list-group button'); let activeItem = button[0]; // первая кнопка из списка будет activeItem [].forEach.call( button, function( item ) { item.addEventListener( 'click', function() { activeItem.classList.remove('active'); //у первой кнопки из списка убираем класс 'active' activeItem = item; // вот тут вопрос, вроде как присваиваем activeItem нажатую только что кнопку activeItem.classList.add('active'); // добавляем нажатой только что кнопке класс 'active' }); }); но работает как надо. Помогите восполнить пробел в знаниях. Как передается удаление класса 'active' всем кнопкам? |
Цитата:
у кнопки нажатой в предыдущий раз |
рони,
дошло, спасибо большое :yes: |
рони,
где же проверка if(activeItem == item) return? |
Цитата:
|
Artur_Hopf, рони, а зачем в коде пустой массив? Разве такую обработку нельзя сделать более эффективной? Вместо цикла воспользоваться делегированием?
|
Malleys,
чем делегирование эффективней в данном случае? чем плох пустой массив? |
рони, делегирование позволяет не перечислять элементы и вы можете использовать только одну функцию. Новые элементы добавленные позже будут тоже работать.
Цитата:
|
Часовой пояс GMT +3, время: 11:17. |