Как я могу отключить a href, если элемент с функцией onclick запущен внутри элемента <a>?

Я пытался event.preventDefault();, но, похоже, он ничего не делает.
Как я могу решить это?

$(function() {
  $(".inside > .fa").click(function(event) {
    event.preventDefault();
    alert("TEST");
  });
});
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href='/'>
  <div class='button'>
    <div class='inside'>
      <i class="fa fa-globe"></i>
    </div>
  </div>
</a>
-1
Dennis 2 Мар 2018 в 04:42

3 ответа

Лучший ответ

Щелчок все еще пузырится вверх. Используйте event.stopPropagation(); вместо этого. Вы используете event.preventDefault() для элемента, который не имеет поведения по умолчанию, поэтому он ничего не делает.

$(function() {
  $(".inside > .fa").click(function(e) {
    e.stopPropagation();
    console.log(e.target);
  });
});
a {
  display: block; /* required otherwise you cannot have block level elements like div inside a */
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href='https://google.com' target="_top">
  <div class='button'>
    <div class='inside'>
      <i class="fa fa-globe"></i>
    </div>
  </div>
</a>
1
connexo 2 Мар 2018 в 01:53

Зарегистрируйте прослушиватель событий по тегу <a>. И внести изменения ниже. Это использует преимущества делегирования событий (хорошая вещь).

Вам понадобятся оба из них:

event.preventDefault();

< Сильный > Добавить

Event.stopPropagation ( ) ;

И, наконец, вам нужно проверить, чтобы убедиться, что элемент, по которому щелкнул элемент , не был the <a>; Итак, ваш код будет выглядеть так:

Вот кодекс, который демонстрирует это:

https://codepen.io/anon/pen/NyJgWB?editors=1111

0
Randy Casburn 2 Мар 2018 в 02:04

Попробуйте return false вместо event.preventDefault() остановить событие

0
Naveed 2 Мар 2018 в 01:45