При клике на кнопку, всплывает блок, как оптимизировать js?

Всем привет, написал легкую функцию для двух блоков с кнопками и текстом.

Две блока в них есть кнопки, при клике на кнопку открывает блок, при этом если второй блок открыт, то скрывает его, и меняет надпись в кнопке если блок открылся, и делаем кнопку не кликабельной. И применяется класс к блоку, где нажали кнопку, ну типа выделаем блок активным.

Все это сделано, вопрос в другом, на мой взгляд js слишком длинный, как-то можно оптимизировать ?

Рабочая схема тут:
https://codepen.io/AXOT/pen/WNaXxag
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
HardBot
@HardBot
back-end, front-end developer
Ну, вот так можно:
const buttons = $('.btt1, .btt2');
const tabs = $('.rr1, .rr2');
const modes = $('#rych, #autm');

buttons.on('click', function() {
  const isManualMode = $(this).is('.btt1');
  const buttonText = `Выбран ${isManualMode ? 'ручной' : 'автоматический'} режим`;

  buttons.prop('disabled', false)
    .removeClass('activvBt')
    .html(`Заполнить в ${isManualMode ? 'автоматическом' : 'ручном'} режиме<i class="icon-arr"></i>`);

  $(this).prop('disabled', true)
    .addClass('activvBt')
    .text(buttonText);

  tabs.hide().eq(isManualMode ? 0 : 1).show(100);
  modes.removeClass('activv').eq(isManualMode ? 0 : 1).addClass('activv');
});


UPD: Кнопки, табы и т.д. можно вынести в один атрибут, чтобы не писать в ручную и искать все эти атрибуты и все.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы