Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2019, 14:11
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Подскажите как убрать класс.
Добрый день. Подскажите как убрать класс "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");
     });
});
Ответить с цитированием
  #2 (permalink)  
Старый 06.08.2019, 14:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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');
     });
});
Ответить с цитированием
  #3 (permalink)  
Старый 06.08.2019, 14:52
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

рони,
спасибо большое , но можно пояснить как это работает.
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' всем кнопкам?
Ответить с цитированием
  #4 (permalink)  
Старый 06.08.2019, 14:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Artur_Hopf
//у первой кнопки из списка убираем класс 'active'

у кнопки нажатой в предыдущий раз
Ответить с цитированием
  #5 (permalink)  
Старый 06.08.2019, 15:00
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

рони,
дошло, спасибо большое
Ответить с цитированием
  #6 (permalink)  
Старый 06.08.2019, 18:13
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
где же проверка if(activeItem == item) return?
Ответить с цитированием
  #7 (permalink)  
Старый 06.08.2019, 18:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от j0hnik
где же проверка
излишне, но можно добавить в строку 6.
Ответить с цитированием
  #8 (permalink)  
Старый 07.08.2019, 02:33
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Artur_Hopf, рони, а зачем в коде пустой массив? Разве такую обработку нельзя сделать более эффективной? Вместо цикла воспользоваться делегированием?
Ответить с цитированием
  #9 (permalink)  
Старый 07.08.2019, 14:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Malleys,
чем делегирование эффективней в данном случае? чем плох пустой массив?
Ответить с цитированием
  #10 (permalink)  
Старый 07.08.2019, 19:50
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

рони, делегирование позволяет не перечислять элементы и вы можете использовать только одну функцию. Новые элементы добавленные позже будут тоже работать.

Сообщение от рони
чем плох пустой массив?
Вы написали 26 415 сообщении и не знаете этого... Пустой массив ничем не плох. Я интересовался причиной, а не тем, что пустой массив может быть хорош или плох! Вы создали массив, но вы не используете его чтобы хранить в нём данные! Соответственно и возникает вопрос о том, а зачем в коде пустой массив?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Uncaught TypeError: $(...) is not a function как убрать ошибку? PHPDeveloper jQuery 14 05.04.2016 16:00
Как добавить класс, если div виден пользователю? sovsem-nub Элементы интерфейса 4 20.02.2016 18:16
Подскажите, как сюда прикрутить ajax? drkrol jQuery 9 25.09.2015 20:47
Подскаите как менять класс у елемента в зависимость от класса другово елемента NirVanea Общие вопросы Javascript 4 10.09.2015 13:51
Передал аяксом класс в <div>, но как отловить событите клик на этот класс ? saturn Элементы интерфейса 11 31.05.2012 10:30