Sự kiện chìm (Event Capturing) trong JavaScript

Ngoài sự nổi bọt của sự kiện còn có sự chìm (capturing). Thực tế, sự kiện đầu tiên đi từ trên xuống dưới (giai đoạn chặn bắt), đến phần tử của chúng ta (giai đoạn mục tiêu) và chỉ sau đó mới bắt đầu nổi bọt (giai đoạn nổi bọt).

Để gắn trình xử lý sự kiện có tính đến giai đoạn chặn bắt trong addEventListener có tham số thứ ba tùy chọn. Nếu nó bằng true - sự kiện sẽ kích hoạt ở giai đoạn chặn bắt, còn nếu false - ở giai đoạn nổi bọt (đây là mặc định). Hãy xem ví dụ:

javascriptelem1.addEventListener('click', function() {
  console.log('màu xanh lá - chặn bắt');
}, true);
elem1.addEventListener('click', function() {
  console.log('màu xanh lá - nổi bọt');
}, false);

elem2.addEventListener('click', function() {
  console.log('màu xanh lam - chặn bắt');
}, true);
elem2.addEventListener('click', function() {
  console.log('màu xanh lam - nổi bọt');
}, false);

elem3.addEventListener('click', function() {
  console.log('màu đỏ - chặn bắt');
}, true);
elem3.addEventListener('click', function() {
  console.log('màu đỏ - nổi bọt');
}, false);

Bạn có thể kiểm tra: