Задать вопрос
@Nikolays93
Web-разработчик

Такой код будет правильным?

Все работает, но возник вопрос:
$(document).ready(function () {
    $(window).scroll(function () {
					if ($(window).width() < 768){
				        if ($(this).scrollTop() > 0) {
				        	$('.iconset-phone').slideUp();
				        } else{
				        	$('.iconset-phone').slideDown();
				        }
				    }
	});
});

Исходя из вышеприведенного кода функция "исчезновения" слоя ($('.iconset-phone').slideUp();) повторяется каждый раз при событии Scroll. Стоит ли беспокоится об этом?
  • Вопрос задан
  • 426 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Особо беспокоится не нужно. По сути, сценарий метода закончится не начавшись, т.к. "анимируемое свойство" элемента, уже будет в финальной его стадии. А вот ваш код, можно было бы слегка оптимизировать.
1. Так как методы должны применяться только, если ширина окна меньше 768px, то условие хорошо бы сделать до установки обработчика события.
2. Кешировать элемент(ы) '.iconset-phone', дабы при каждом срабатывании события, не приходилось выполнять их поиск на странице
В общем, можно сделать как-то так:
$(function() {
    if ($(window).width() < 768) {
        var iconset = $('.iconset-phone');
        $(window).on('scroll', function() {
            iconset[$(this).scrollTop() > 0 ? 'slideUp' : 'slideDown']();
        });
    }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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