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

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

Нужно применить preventDefault, только для ссылок с href="#", которые находятся в li с классом my_class.
Возможно ли так вообще использовать preventDefault и если да, то как синтаксически верно будет выглядеть такой код?
  • Вопрос задан
  • 179 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 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();
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
07 февр. 2025, в 07:05
100000 руб./за проект
07 февр. 2025, в 03:38
500 руб./за проект
07 февр. 2025, в 02:40
30000 руб./за проект