Cách dừng hành vi nhấp vào liên kết mặc định với jQuery


88

Tôi có một liên kết trên một trang web. Khi người dùng nhấp vào nó, tiện ích con trên trang sẽ cập nhật. Tuy nhiên, tôi đang làm điều gì đó, vì chức năng mặc định (điều hướng đến một trang khác) xảy ra trước khi sự kiện kích hoạt.

Đây là liên kết trông như thế nào:

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

Đây là giao diện của jQuery:

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

Vấn đề là gì?


Câu trả lời:



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

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

Các phương pháp sau đây đạt được điều tương tự.


Tại sao tôi cần gọi stopPropagation()preventDefault()?
smartcaveman,

2
Nhìn vào câu trả lời của Jonathons, anh ấy giải thích mỗi chức năng làm gì. Nhưng về cơ bản, để đảm bảo rằng lần nhấp bạn vừa xử lý không bị người khác xử lý sau này.
Peeter

30

Bạn muốn e.preventDefault()ngăn chức năng mặc định xảy ra.

Hoặc có return falsetừ phương pháp của bạn.

preventDefaultngăn chức năng mặc định và stopPropagationngăn không cho sự kiện nổi lên các phần tử vùng chứa.



1

Mã này loại bỏ tất cả các trình nghe sự kiện

var old_element=document.getElementsByClassName(".update-cart");    
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);  
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.