Как оптимизировать код 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');
});
  • Вопрос задан
  • 88 просмотров
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Можно повесить глобальный обработчик нажатия на корневой элемент, а в нём уже проверять, на какой именно элемент было произведено нажатие (через event.target), и если он обладает нужными свойствами - то применять к нему действие.
И так даже лучше, потому что в последствии не придётся заморачиваться над обработчиком при удалении или добавлении новых пунктов меню.
Ответ написан
valiksemenkow85
@valiksemenkow85
Поиск информации ВКонтакте - https://vkdotcom.ru/
Есть много сервисов онлайн для решения этого вопроса!
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Юздеск Москва
от 100 000 до 160 000 руб.
AnyChart Иркутск
от 20 000 руб.
PROFI.RU Москва
от 180 000 руб.
21 нояб. 2019, в 09:12
3001 руб./за проект
21 нояб. 2019, в 08:35
2000 руб./за проект
21 нояб. 2019, в 07:41
3000 руб./за проект