Как упростить и переписать код слайдера с JQuery на ванильный JS?

336
08 июня 2017, 09:00

У меня есть файлики с простой логикой события: нажал на кнопку - появляется один элемент, исчезает другой. И эти файлики разрослись до неприятно больших размеров, из-за чего появляются неприятные моменты при загрузке страницы.

Это пример моего кода. У меня шесть слайдов, по клику на них происходят следующие события.

$('.slide-1').focus(function () {
    $('.number-1').css('font-weight', 'bold');
    $('.number-1').css('color', 'rgb(255, 255, 255)');
    $('.number-1').css('margin-left', '3.5vw');
    $('.number-2').css('font-weight', 400);
    $('.number-2').css('color', 'rgb(203, 203, 203)');
    $('.number-2').css('margin-left', 0);
    $('.number-3').css('font-weight', 400);
    $('.number-3').css('color', 'rgb(203, 203, 203)');
    $('.number-3').css('margin-left', 0);
    $('.number-4').css('font-weight', 400);
    $('.number-4').css('color', 'rgb(203, 203, 203)');
    $('.number-4').css('margin-left', 0);
    $('.number-5').css('font-weight', 400);
    $('.number-5').css('color', 'rgb(203, 203, 203)');
    $('.number-5').css('margin-left', 0);
    $('.number-6').css('font-weight', 400);
    $('.number-6').css('color', 'rgb(203, 203, 203)');
    $('.number-6').css('margin-left', 0);
});
$('.slide-1').click(function () {
    $('.down-1').css('display', 'flex');
    $('.down-2').css('display', 'none');
    $('.down-3').css('display', 'none');
    $('.down-4').css('display', 'none');
    $('.down-5').css('display', 'none');
    $('.down-6').css('display', 'none');
    $('.arrow-1').css('display', 'none');
    $('.arrow-2').css('display', 'block');
    $('.arrow-3').css('display', 'block');
    $('.arrow-4').css('display', 'block');
    $('.arrow-5').css('display', 'block');
    $('.arrow-6').css('display', 'block');
    $('.main-text-1').css('display', 'flex');
});

Мне необходимо переписать логику слайдера на чистом JS. Хотя бы просто потому, что хочу уметь это делать. Поддержка браузеров ниже IE11 не требуется. Насколько сильно это зависит от кода на JS?

Answer 1
$('.down-1').css('display', 'flex');

Аналогично

document.querySelector('.down-1').style.display = "flex"

так же и обработчики событий:

$('.slide-1').click(function () {
...
})

Аналогично

document.querySelector('.slide-1').onclick = function(){
...
}
READ ALSO
Side effect в Redux / Redux-thunk

Side effect в Redux / Redux-thunk

Что такое сайд эффекты в Redux? И чем это плохо?

348
Jquery как добавить текст к значению из placeholder

Jquery как добавить текст к значению из placeholder

Всем привет, есть следующая html разметка

352
Плавная прокрутка к якорю без jQuery

Плавная прокрутка к якорю без jQuery

Есть отличный скрипт плавной прокрутки на jQuery

551
Меню не исчезает при скролле

Меню не исчезает при скролле

У меня проблема, когда я скроллю страницу меню не исчезает/появляется вот код

311