it-swarm.com.de

So stoppen Sie das Standard-Link-Klick-Verhalten mit jQuery

Ich habe einen Link auf einer Webseite. Wenn ein Benutzer darauf klickt, sollte ein Widget auf der Seite aktualisiert werden. Ich tue jedoch etwas, da die Standardfunktionalität (Navigieren zu einer anderen Seite) vor dem Auslösen des Ereignisses ausgeführt wird.

So sieht der Link aus:

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

So sieht die jQuery aus:

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

Was ist das Problem?

79
smartcaveman
e.preventDefault();

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

Bricht das Ereignis ab, wenn es stornierbar ist, ohne die weitere Verbreitung des Ereignisses zu stoppen.

129
Artjom Zabelin

Sie möchten, dass e.preventDefault() die Standardfunktionalität verhindert.

Oder haben return false von Ihrer Methode.

preventDefault verhindert die Standardfunktionalität und stopPropagation verhindert, dass das Ereignis zu Containerelementen hochsprudelt.

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

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

Die folgenden Methoden erreichen genau dasselbe.

27
Peeter

Sie können e.preventDefault(); anstelle von e.stopPropagation(); verwenden

2
Null Pointer

Dieser Code entfernt alle Ereignis-Listener

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