@JoneCode

Как более оптимизированно можно написать данный код?

Помогите, пожалуйста, как данный код можно уменьшить и более грамотно написать!?

$(document).ready(function () {

    var $menu = $("#menu");
    var $scroll = '128'; 

    if ($(this).scrollTop() > $scroll) {
        $($menu).addClass('fixed');
        $($menu).removeClass('default');
    }

    $(window).scroll(function(){
        if ( $(this).scrollTop() > $scroll && $menu.hasClass("default") ){
            $menu.removeClass("default").addClass("fixed");
        } else if($(this).scrollTop() <= $scroll && $menu.hasClass("fixed")) {
            $menu.removeClass("fixed").addClass("default");
        }
    });
});
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
const menu = document.getElementById('menu');
const scroll = 128;
function toggleFixedMenu() {
  menu.classList.toggle('fixed', window.pageYOffset > scroll);
  menu.classList.toggle('default', window.pageYOffset <= scroll);
}
window.addEventListener('scroll', toggleFixedMenu);
toggleFixedMenu();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dima9595
@dima9595
Junior PHP
1. Вы уже установили #menu в переменную, тогда зачем же её опять вызываете в изменении классов.
2. Если часто берёте значение $(this).scrollTop(), то лучше её поместить в переменную и вызывать собственно саму переменную.
3. Почему все переменные начинаются у вас с "$"? Вы с PHP пришли что ли?
4. Перейдите на ванильный JS.
Ответ написан
Ваш ответ на вопрос

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

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