Как остановить поведение щелчка по умолчанию с помощью jQuery - PullRequest
76 голосов
/ 12 апреля 2011

У меня есть ссылка на веб-страницу.Когда пользователь щелкает по нему, виджет на странице должен обновляться.Однако я что-то делаю, потому что функциональность по умолчанию (переход на другую страницу) происходит до того, как сработает событие.

Вот как выглядит ссылка:

  <a href="store/cart/" class="update-cart">Update Cart</a>

Вот как выглядит jQuery:

   $('.update-cart').click(function(e) { 
         e.stopPropagation(); 
         updateCartWidget(); 
      });

В чем проблема?

Ответы [ 5 ]

126 голосов
/ 12 апреля 2011
e.preventDefault();

от https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

Отменяет событие, если оно отменяется, без остановки дальнейшего распространения события.

28 голосов
/ 12 апреля 2011

Вы хотите, чтобы e.preventDefault() запретил выполнение функций по умолчанию.

Или return false по вашему методу.

preventDefault запрещает функциональность по умолчанию, а stopPropagation предотвращает всплытие события к элементам контейнера.

27 голосов
/ 12 апреля 2011
$('.update-cart').click(function(e) {
    updateCartWidget();
    e.stopPropagation();
    e.preventDefault();
});

$('.update-cart').click(function() {
    updateCartWidget();
    return false;
});

Следующие методы позволяют получить ту же самую вещь.

2 голосов
/ 08 октября 2011

Вы можете использовать e.preventDefault(); вместо e.stopPropagation();

1 голос
/ 13 января 2016

Этот код лишает всех слушателей событий

var old_element=document.getElementsByClassName(".update-cart");    
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);  
...