@historydev
Острая аллергия на анимешников

Как совместить e.target с +.lvl2?

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

Спасибо.

let state = false,
	state2 = false,
	state3 = false

$(document).on('click', '.list', (e) => {
	state = !state

	if(state) $(`${e.target} +.lvl2`).css('display','block')

})
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега CSS
Верставший фронтендер
Исходя из JS кода, а так же Ваших пояснений в комментариях к вопросу, предлагаю переоформить Ваше решение следующим образом:
  • Скрываем css`ом все .lvl2
  • Было бы так же хорошо поместить все .list в отдельный контейнер, чтобы не слушать весь документ. Если это возможно, конечно.
  • Переписываем js слудующим образом:

$('.list-container').on('click', '.list', listClickHandler);

function listClickHandler(){
  $(this).next('.lvl2').slideToggle(); // this - элемент, на котором произошёл клик. Соответственно $(this) - его jQuery версия
}


.next()
.slideToggle()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Seasle
@Seasle Куратор тега CSS
Если меню сделано на focusable элементах, можно попробовать комбинацию :focus и :focus-within
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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