@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. Стоит ли беспокоится об этом?
  • Вопрос задан
  • 424 просмотра
Решения вопроса 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']();
        });
    }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы