Come interrompere il comportamento di clic sul collegamento predefinito con jQuery


88

Ho un collegamento in una pagina web. Quando un utente fa clic su di esso, un widget sulla pagina dovrebbe aggiornarsi. Tuttavia, sto facendo qualcosa, perché la funzionalità predefinita (navigare in una pagina diversa) si verifica prima che l'evento si attivi.

Ecco come appare il collegamento:

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

Questo è l'aspetto di jQuery:

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

Qual è il problema?


possibile duplicato di jQuery disabilita un collegamento
utente

Risposte:



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

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

I seguenti metodi ottengono esattamente la stessa cosa.


Perché devo chiamare stopPropagation()e preventDefault()?
smartcaveman

2
Guarda la risposta di Jonathon, spiega cosa fa ogni funzione. Ma fondamentalmente, per assicurarti che il clic che hai appena gestito non venga gestito da qualcun altro in seguito.
Peeter

30

Si desidera e.preventDefault()impedire che si verifichi la funzionalità predefinita.

O avere return falsedal tuo metodo.

preventDefaultimpedisce la funzionalità predefinita e stopPropagationimpedisce all'evento di ribollire agli elementi del contenitore.



1

Questo codice elimina tutti i listener di eventi

var old_element=document.getElementsByClassName(".update-cart");    
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);  
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.