Як зупинити поведінку клацання за замовчуванням за допомогою jQuery


88

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

Ось як виглядає посилання:

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

Ось як виглядає jQuery:

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

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


Відповіді:



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

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

Наступні методи дозволяють досягти точно того ж.


Навіщо мені телефонувати stopPropagation()і preventDefault()?
smartcaveman

2
Подивіться на відповідь Джонатанса, він пояснює, що робить кожна функція. Але в основному, щоб переконатися, що ви щойно оброблений клік не обробляється кимось іншим згодом.
Пітер

30

Ви хочете e.preventDefault()запобігти появі функцій за замовчуванням.

Або є return falseз вашого методу.

preventDefaultзапобігає функціональності за замовчуванням та stopPropagationзапобігає появі подій до елементів контейнера.



1

Цей код позбавляє всіх слухачів подій

var old_element=document.getElementsByClassName(".update-cart");    
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);  
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.