error401
@error401

Как применить e.preventDefault только к определенным ссылкам, а не ко всем?

Нужно применить preventDefault, только для ссылок с href="#", которые находятся в li с классом my_class.
Возможно ли так вообще использовать preventDefault и если да, то как синтаксически верно будет выглядеть такой код?
  • Вопрос задан
  • 150 просмотров
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
О каких ссылках идёт речь: const selector = 'li.my_class a[href="#"]';.

Обработчик клика можно назначать каждой ссылке индивидуально:

document.querySelectorAll(selector).forEach(function(n) {
  n.addEventListener('click', this);
}, e => e.preventDefault());

Или один раз для всех:

document.addEventListener('click', e => {
  const link = e.target.closest(selector);
  if (link) {
    e.preventDefault();
  }
});
Ответ написан
Комментировать
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
$('li.my_class a[href="#"]')
Ответ написан
Комментировать
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
$("a").on('click', function (e){
  if ($(this).attr('href') === '#' && $(this).parents('li.my_class').length) {
    e.preventDefault();
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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