godsplane
@godsplane

Можно ли это как тот сократить?

j
$('.js-plus').on('click', function () {
//do
	})
	$('.js-minus').on('click', function () {
		//do
	})


То есть есть кнопка плюс знаения и кнопка минус, внутрик обработчика выполнятеся немного разные действия. Есть ли возможность сокращения этого кода?Мне кажется я неправильно все построил
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 3
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Примерно так можно:
$('.js-button').on('click', function () {
  ...

  if (this.hasClass('js-plus')) { ... }
  else { ... }   

  ...
})
Ответ написан


Пишите один обработчик, в котором указываете код, который всегда выполняется для обоих случаев, для отдельного случая используйте if
Ответ написан
Комментировать
@Israfil22
Да, код можно улучшить. Но в этом абсолютно нет никакой необходимости.
Данный фрагмент настолько мал, что задаваться вопросом об его эффективности, скорее всего, бесполезно и даже вредно.
Если интересно услышать о том, какие есть варианты, то выбирайте из ответов)
Я бы на Вашем месте сделал:
const createCounter = () => {
    const counter = 1
    return {
        increment: () => counter++,
        decrement: () => {
            if (counter <= 1) return
            counter--                
        }
    }
}
сounterСontrollers = createCounter()
$('.js-plus').on('click', сounterСontrollers.increment)
$('.js-minus').on('click', сounterСontrollers.decrement)
Ответ написан
Ваш ответ на вопрос

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

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