J'ai un lien sur une page Web. Lorsqu'un utilisateur clique dessus, un widget de la page doit être mis à jour. Cependant, je fais quelque chose, car la fonctionnalité par défaut (navigation vers une page différente) se produit avant le déclenchement de l'événement.
Voici à quoi ressemble le lien:
<a href="store/cart/" class="update-cart">Update Cart</a>
Voici à quoi ressemble jQuery:
$('.update-cart').click(function(e) {
e.stopPropagation();
updateCartWidget();
});
Quel est le problème?
e.preventDefault();
à partir de https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault
Annule l'événement s'il est annulable, sans arrêter sa propagation.
Vous voulez que e.preventDefault()
empêche la fonctionnalité par défaut de se produire.
Ou avoir return false
de votre méthode.
preventDefault
empêche la fonctionnalité par défaut et stopPropagation
empêche l'événement de se propager jusqu'aux éléments du conteneur.
$('.update-cart').click(function(e) {
updateCartWidget();
e.stopPropagation();
e.preventDefault();
});
$('.update-cart').click(function() {
updateCartWidget();
return false;
});
Les méthodes suivantes permettent d'obtenir exactement la même chose.
Vous pouvez utiliser e.preventDefault();
au lieu de e.stopPropagation();
Ce code supprime tous les écouteurs d'événements
var old_element=document.getElementsByClassName(".update-cart");
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);