Как убрать переход на страницу по ссылке?

На сайте есть вот такое меню,
5e860327129ef305941614.jpeg
при клике на "О поселении" должен появлятся выпадающий список, который есть на скрине, но не должен быть выполнен переход на страницу "О поселении". Как убрать путь на страницу "О поселении", с этого пункта меню, но его оставить.
Сайт на ВП, меню зарегано, в коде его нигде найти не могу.
Пытался решить свою проблему с помощью вот такого кода:
.menu-item-500:active a {pointer-events: none;}
.top-nav__list .sub-menu li a {pointer-events: auto;}

На десктопе срабоатло, но на телефонах и т.д выпадающий список не появляется. Как решить?
Если вам надо ещё что-то предоставить - предоставлю
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
@MagicMight
Поставить <a href="#">?
Ответ написан
@dmitry_pacification
Трудности рождают прорыв
1) Вешаешь колбэк на ссылки, Object.values(document.querySelectorAll('a')).map(l => l.addEventListener('click', onClickHangler))
Реализация: onClickHangler
(e) => {
if(document.location.href.includes(e.target.pathname)) {
e.preventDefault();
}};

2) Только потом нужно не забыть сделать
Object.values(document.querySelectorAll('a')).map(l => l.removeEventListener('click', onClickHangler))
onClickHangler

3) Так же строки можно сверять через === или .startsWith(). И есть вероятность что нужно будет дополнительно удалять из ссылки первый "/", иначе в проверке всегда будет false

И еще вариант:
Ты можешь в querySelectorAll добавить поиск по url (document.location.pathname), и находить только те ссылки в которой url совпадает с текущей. И вешать хэндлеры только на них. Ну и так же уберать придеться только с них. И тогда в onClickHangler тебе только нужно будет делать e.preventDefault();
Ответ написан
Ваш ответ на вопрос

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

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