Rumah > hujung hadapan web > tutorial js > Apakah perbezaan dalam mekanisme tindak balas antara peristiwa menggelegak dan tidak berbuih?

Apakah perbezaan dalam mekanisme tindak balas antara peristiwa menggelegak dan tidak berbuih?

王林
Lepaskan: 2024-02-19 23:49:06
asal
1297 orang telah melayarinya

Apakah perbezaan dalam mekanisme tindak balas antara peristiwa menggelegak dan tidak berbuih?

Apakah perbezaan antara peristiwa menggelegak dan peristiwa tidak menggelegak diperlukan contoh kod khusus

Peristiwa itu boleh menjadi tingkah laku interaksi pengguna (seperti klik, menyeret, dll.), atau Ia boleh menjadi gelagat dalaman penyemak imbas atau halaman web (seperti penyiapan pemuatan, perubahan saiz tetingkap, dsb.). Mengikut kaedah penyebaran peristiwa yang berbeza, peristiwa boleh dibahagikan kepada peristiwa menggelegak dan peristiwa bukan gelembung.

Acara menggelegak
Peristiwa menggelegak merujuk kepada peristiwa yang bermula dari sasaran acara dan merambat ke elemen atas langkah demi langkah sehingga ia mencapai nod akar dokumen. Semasa proses penyebaran, pengendali peristiwa unsur induk akan dicetuskan dahulu, kemudian pengendali peristiwa unsur datuk nenek, dan seterusnya, sehingga pengendali peristiwa pada nod akar.

Berikut ialah contoh kod untuk acara menggelegak:

Kod HTML:

<div id="outer">
  <div id="inner">
    <button id="button">点击</button>
  </div>
</div>
Salin selepas log masuk
Salin selepas log masuk

Kod JavaScript:

var outer = document.getElementById('outer');
var inner = document.getElementById('inner');
var button = document.getElementById('button');

button.addEventListener('click', function(event) {
  console.log('按钮被点击');
});

inner.addEventListener('click', function(event) {
  console.log('内部div被点击');
});

outer.addEventListener('click', function(event) {
  console.log('外部div被点击');
});
Salin selepas log masuk

Apabila butang diklik, konsol akan mengeluarkan yang berikut:

按钮被点击
内部div被点击
外部div被点击
Salin selepas log masuk

Seperti yang dapat dilihat daripada output , menggelegak Peristiwa menyala dahulu pengendali acara klik butang, kemudian pengendali acara klik div dalam, dan akhirnya pengendali acara klik div luar.

Acara tidak menggelegak
Acara tidak menggelegak bermakna acara itu hanya akan dicetuskan pada sasaran acara dan tidak akan merambat ke atas. Dalam erti kata lain, hanya pengendali acara elemen yang diklik akan dilaksanakan.

Berikut ialah contoh kod untuk acara tidak menggelegak:

Kod HTML:

<div id="outer">
  <div id="inner">
    <button id="button">点击</button>
  </div>
</div>
Salin selepas log masuk
Salin selepas log masuk

Kod JavaScript:

var outer = document.getElementById('outer');
var inner = document.getElementById('inner');
var button = document.getElementById('button');

button.addEventListener('click', function(event) {
  console.log('按钮被点击');
});

inner.addEventListener('click', function(event) {
  console.log('内部div被点击');
});

outer.addEventListener('click', function(event) {
  console.log('外部div被点击');
}, true);
Salin selepas log masuk

Apabila butang diklik, konsol hanya akan mengeluarkan yang berikut:

rreee

As boleh dilihat daripada output, Peristiwa tidak menggelegak hanya mencetuskan pengendali acara klik butang.

Ringkasnya, perbezaan utama antara acara menggelegak dan acara bukan gelembung ialah cara acara itu disebarkan. Peristiwa menggelegak akan merambat daripada sasaran acara ke elemen atas, manakala acara tidak menggelegak hanya akan dicetuskan pada sasaran acara. Memahami perbezaan antara kedua-dua acara ini adalah sangat penting untuk mengendalikan penyebaran acara dan mengoptimumkan kesan interaktif halaman.

Atas ialah kandungan terperinci Apakah perbezaan dalam mekanisme tindak balas antara peristiwa menggelegak dan tidak berbuih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan