Подскажите как убрать класс.
Добрый день. Подскажите как убрать класс "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, время: 15:52. |