Задать вопрос

Как оптимизировать код jQuery?

Здравствуйте, при клике на некоторые пункты меню открывается или скрывается подменю на адаптивной версии сайта. Подскажите, как можно оптимизировать или переписать этот кусок кода. Заранее спасибо

let chairs = $('.responsive-menu-items > ul > li:nth-child(6) > a'),
    chairsList = $('.responsive-menu-items > ul > li:nth-child(6) > ul'),
    accessories = $('.responsive-menu-items > ul > li:nth-child(11) > a'),
    accessoriesList = $('.responsive-menu-items > ul > li:nth-child(11) > ul'),
    component = $('.responsive-menu-items > ul > li:nth-child(12) > a'),
    componentList = $('.responsive-menu-items > ul > li:nth-child(12) > ul');

chairs.on('click', function() {
    chairsList.toggleClass('subcategories');
});

accessories.on('click', function() {
    accessoriesList.toggleClass('subcategories');
});

component.on('click', function() {
    componentList.toggleClass('subcategories');
});
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
iamd503
@iamd503
Верстальщик
$('.responsive-menu-items > ul > li').each(function () {
        let el = $(this),
            link = $('> a', el),
            ul = $('> ul', el);
        if (ul.length && window.matchMedia("(max-width: 400px)").matches) {
            link.click(function () {
                ul.toggleClass('subcategories');
                return false;
            })
        }
    })


fix
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Можно повесить глобальный обработчик нажатия на корневой элемент, а в нём уже проверять, на какой именно элемент было произведено нажатие (через event.target), и если он обладает нужными свойствами - то применять к нему действие.
И так даже лучше, потому что в последствии не придётся заморачиваться над обработчиком при удалении или добавлении новых пунктов меню.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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