@vikholodov

Чем заменить столь несовершенную конструкцию?

Я - зародыш в jquery, знаю только совсем базовые вещи, написал слайдер из 3х элементов, получился очень костыльный, помогите все неравнодушные тактически грамотно оформить следующий функционал:
$(function(){
		$('.step.first').on('click', function(){
		  if($(this).hasClass('active')){
		  } else {
		  	$('.step').removeClass('active');
		  	$(this).addClass('active');
		  	$('.slide').removeClass('active');
		  	$('.slide.first').addClass('active');
		  }

		});
		$('.step.second').on('click', function(){
		  if($(this).hasClass('active')){
		  } else {
		  	$('.step').removeClass('active');
		  	$(this).addClass('active');
		  	$('.slide').removeClass('active');
		  	$('.slide.second').addClass('active');
		  }

		});
		$('.step.third').on('click', function(){
		  if($(this).hasClass('active')){
		  } else {
		  	$('.step').removeClass('active');
		  	$(this).addClass('active');
		  	$('.slide').removeClass('active');
		  	$('.slide.third').addClass('active');
		  }

		});
	});
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Установим соответствие между слайдами и кнопками с помощью data-атрибута:

<div class="slide" data-slide="1">1</div>
<div class="slide" data-slide="2">1+1</div>
<div class="slide" data-slide="3">3.0001</div>

<div>
  <span class="step" data-slide="1"></span>
  <span class="step" data-slide="2"></span>
  <span class="step" data-slide="3"></span>
</div>

По клику на кнопку снимаем класс active там, где он есть, добавляем его кликнутой кнопке и слайду, чьё значение data-slide такое же, как у кнопки:

$(document).on('click', '.step', function() {
  $('.step.active, .slide.active').removeClass('active');
  $(this).addClass('active');
  $(`.slide[data-slide="${this.dataset.slide}"]`).addClass('active');
});

// по умолчанию сделаем активным первый слайд
$('.step').eq(0).click();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
28 нояб. 2024, в 18:46
3000 руб./за проект
28 нояб. 2024, в 17:46
10000 руб./за проект
28 нояб. 2024, в 17:38
12000 руб./за проект