Khi tôi muốn ngăn các trình xử lý sự kiện khác thực thi sau khi một sự kiện nào đó được kích hoạt, tôi có thể sử dụng một trong hai kỹ thuật. Tôi sẽ sử dụng jQuery trong các ví dụ, nhưng điều này cũng áp dụng cho cả Plain-JS:
1. event.preventDefault()
$('a').click(function (e) {
// custom handling here
e.preventDefault();
});
2. return false
$('a').click(function () {
// custom handling here
return false;
});
Có sự khác biệt đáng kể nào giữa hai phương pháp ngăn chặn sự lan truyền sự kiện này không?
Đối với tôi, return false;
đơn giản hơn, ngắn hơn và có lẽ ít xảy ra lỗi hơn so với thực hiện một phương thức. Với phương pháp, bạn phải nhớ về vỏ chính xác, dấu ngoặc đơn, v.v.
Ngoài ra, tôi phải xác định tham số đầu tiên trong cuộc gọi lại để có thể gọi phương thức. Có lẽ, có một số lý do tại sao tôi nên tránh làm như thế này và sử dụng preventDefault
thay thế? Cách tốt hơn là gì?
preventDefault
không không ngăn chặn người thuận tay khác từ thực hiện. Đó là những gìstopImmediatePropagation
dành cho.