Rumah hujung hadapan web tutorial js Had peristiwa menggelegak: Bilakah menggelegak tidak boleh dilaksanakan?

Had peristiwa menggelegak: Bilakah menggelegak tidak boleh dilaksanakan?

Jan 13, 2024 pm 03:22 PM
peristiwa had acara menggelegak menggelegak Tidak dapat dicapai

Had peristiwa menggelegak: Bilakah menggelegak tidak boleh dilaksanakan?

Keterbatasan peristiwa menggelegak: Dalam keadaan apakah gelembung tidak boleh dicapai?

Dalam pembangunan bahagian hadapan, kami sering menggunakan acara menggelegak untuk mengendalikan acara elemen DOM. Walau bagaimanapun, kadangkala menggelegak bukanlah ubat mujarab, dan terdapat beberapa kes di mana menggelegak tidak dapat mencapai keperluan kita. Artikel ini akan membincangkan beberapa situasi yang tidak boleh menggelegak dan memberikan contoh kod khusus.

1. Cegah menggelegak
Biasanya, kami menggunakan kaedah Event.stopPropagation() untuk mengelakkan acara daripada menggelegak. Walau bagaimanapun, kadangkala mencegah menggelegak tidak mencapai kesan yang diingini. Event.stopPropagation()方法来阻止事件的冒泡。然而,有些时候阻止冒泡并不能达到我们想要的效果。

例如,假设我们有一个父元素和一个子元素,当点击子元素时,我们希望子元素的事件处理函数执行完后再执行父元素的事件处理函数。我们可能会尝试在子元素的事件处理函数中使用event.stopPropagation()

Sebagai contoh, katakan kita mempunyai elemen induk dan elemen anak Apabila elemen anak diklik, kita mahu fungsi pengendali peristiwa unsur anak dilaksanakan sebelum fungsi pengendali peristiwa unsur induk dilaksanakan. Kami mungkin cuba menggunakan event.stopPropagation() dalam pengendali acara elemen kanak-kanak untuk mengelakkan menggelegak:

<div id="parent">
  <div id="child"></div>
</div>

<script>
document.getElementById('child').addEventListener('click', function(event) {
  event.stopPropagation();
  console.log('子元素点击事件');
});

document.getElementById('parent').addEventListener('click', function() {
  console.log('父元素点击事件');
});
</script>
Salin selepas log masuk

Walau bagaimanapun, kod di atas tidak boleh mencapai keperluan kami Mengklik pada elemen kanak-kanak hanya akan pengendali acara klik unsur anak dilaksanakan, tetapi pengendali acara klik unsur induk tidak dilaksanakan. Ini kerana mencegah menggelegak hanya akan menghalang acara daripada dihantar kepada elemen induk, tetapi ia tidak akan menyebabkan pengendali acara elemen induk dilaksanakan selepas pengendali acara elemen anak dilaksanakan.


2. Delegasi acara

Delegasi acara menggunakan prinsip menggelegak acara untuk mengikat acara dengan elemen induk dan mencetuskan fungsi pemprosesan yang sepadan dengan menilai sumber acara. Walau bagaimanapun, kadangkala terdapat had apabila menggunakan perwakilan acara.

Sebagai contoh, katakan kita mempunyai elemen ul yang mengandungi berbilang elemen li. Kami berharap apabila mana-mana elemen li diklik, kandungan teks elemen tersebut akan dikeluarkan. Kami mungkin cuba menggunakan delegasi acara untuk mencapai:

<ul id="list">
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>

<script>
document.getElementById('list').addEventListener('click', function(event) {
  if (event.target.tagName.toLowerCase() === 'li') {
    console.log(event.target.textContent);
  }
});
</script>
Salin selepas log masuk

Kod di atas boleh mencapai keperluan kami Selepas mengklik mana-mana elemen li, kandungan teks elemen akan dikeluarkan. Tetapi jika kita menambahkan teg pada elemen li, dan menggelegak dihalang apabila teg diklik, perwakilan acara tidak akan berfungsi dengan betul:

<ul id="list">
  <li>1 <a href="#" onclick="event.stopPropagation();">阻止冒泡</a></li>
  <li>2</li>
  <li>3</li>
</ul>

<script>
document.getElementById('list').addEventListener('click', function(event) {
  if (event.target.tagName.toLowerCase() === 'li') {
    console.log(event.target.textContent);
  }
});
</script>
Salin selepas log masuk

Dalam kod di atas, apabila pautan "Cegah Bubbling" diklik, delegasi acara akan gagal dan tiada apa yang akan dikeluarkan. Ini kerana menghalang menggelegak menghalang acara daripada menggelegak ke elemen ul, jadi perwakilan acara tidak dapat mengesan sumber acara yang sepadan.


3. Pemprosesan acara tak segerak

Dalam sesetengah kes, kami mungkin perlu memproses acara secara tidak segerak, seperti membuat permintaan rangkaian atau melakukan operasi lain yang memakan masa. Walau bagaimanapun, mekanisme menggelegak tidak dapat memenuhi keperluan pemprosesan peristiwa tak segerak secara langsung.

Sebagai contoh, katakan kita mempunyai elemen butang Apabila butang diklik, kita perlu menghantar permintaan tak segerak untuk mendapatkan data, dan kemudian mengemas kini halaman berdasarkan data. Kami mungkin cuba melakukan operasi tak segerak dalam pengendali acara klik butang:

<button id="btn">点击</button>

<script>
document.getElementById('btn').addEventListener('click', function() {
  setTimeout(function() {
    console.log('异步操作完成');
  }, 1000);
});
</script>
Salin selepas log masuk

Kod di atas akan mengeluarkan "Operasi tak segerak selesai" satu saat selepas butang diklik. Walau bagaimanapun, jika kami mempunyai pengendali acara klik pada elemen induk butang dan ingin melaksanakan pengendali acara selepas operasi tak segerak selesai, mekanisme menggelegak tidak dapat mencapai keperluan ini.

Ringkasnya, walaupun menggelegak adalah mekanisme yang sangat biasa dan berkuasa dalam pembangunan bahagian hadapan, ia juga mempunyai beberapa batasan dalam beberapa kes. Dalam kes ini, kita perlu mencari penyelesaian lain untuk memenuhi keperluan kita. 🎜

Atas ialah kandungan terperinci Had peristiwa menggelegak: Bilakah menggelegak tidak boleh dilaksanakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

ID Peristiwa 4660: Objek dipadamkan [Betulkan] ID Peristiwa 4660: Objek dipadamkan [Betulkan] Jul 03, 2023 am 08:13 AM

Sesetengah pembaca kami menemui ID4660 acara. Mereka sering tidak pasti apa yang perlu dilakukan, jadi kami menerangkannya dalam panduan ini. ID Peristiwa 4660 biasanya dilog apabila objek dipadamkan, jadi kami juga akan meneroka beberapa cara praktikal untuk membetulkannya pada komputer anda. Apakah acara ID4660? ID Peristiwa 4660 berkaitan dengan objek dalam Direktori Aktif dan akan dicetuskan oleh mana-mana faktor berikut: Pemadaman Objek – Peristiwa keselamatan dengan ID Peristiwa 4660 direkodkan apabila objek dipadamkan daripada Direktori Aktif. Perubahan manual – ID Peristiwa 4660 mungkin dijana apabila pengguna atau pentadbir menukar kebenaran objek secara manual. Ini boleh berlaku apabila menukar tetapan kebenaran, mengubah suai tahap akses atau menambah atau mengalih keluar orang atau kumpulan

Bagaimana untuk mengalih keluar sekatan ulasan pada akaun video? Apakah had perkataan untuk ulasan pada akaun video? Bagaimana untuk mengalih keluar sekatan ulasan pada akaun video? Apakah had perkataan untuk ulasan pada akaun video? Mar 22, 2024 pm 02:11 PM

Dengan populariti akaun video di media sosial, semakin ramai orang mula menggunakan akaun video untuk berkongsi kehidupan harian, pandangan dan cerita mereka. Walau bagaimanapun, sesetengah pengguna mungkin mengalami ulasan yang disekat, yang boleh menyebabkan mereka keliru dan tidak berpuas hati. 1. Bagaimana untuk mengalih keluar sekatan ulasan pada akaun video? Untuk menarik balik sekatan mengulas pada akaun video, anda mesti terlebih dahulu memastikan akaun tersebut telah didaftarkan dengan betul dan pengesahan nama sebenar telah selesai. Akaun video mempunyai keperluan untuk ulasan Hanya akaun yang telah melengkapkan pengesahan nama sebenar boleh menarik balik sekatan ulasan. Jika terdapat sebarang keabnormalan dalam akaun, isu ini perlu diselesaikan sebelum sekatan ulasan boleh ditarik balik. 2. Mematuhi piawaian komuniti akaun video. Akaun video mempunyai piawaian tertentu untuk kandungan ulasan Jika ulasan itu melibatkan kandungan yang menyalahi undang-undang, anda akan disekat daripada bercakap. Untuk menarik balik sekatan ulasan, anda perlu mematuhi komuniti akaun video tersebut

Dapatkan acara kalendar akan datang pada skrin kunci iPhone anda Dapatkan acara kalendar akan datang pada skrin kunci iPhone anda Dec 01, 2023 pm 02:21 PM

Pada iPhone yang menjalankan iOS 16 atau lebih baru, anda boleh memaparkan acara kalendar akan datang terus pada skrin kunci. Baca terus untuk mengetahui cara ia dilakukan. Terima kasih kepada komplikasi muka jam tangan, ramai pengguna Apple Watch sudah terbiasa melihat pergelangan tangan mereka untuk melihat acara kalendar yang akan datang. Dengan kemunculan iOS16 dan widget skrin kunci, anda boleh melihat maklumat acara kalendar yang sama terus pada iPhone anda tanpa membuka kunci peranti. Widget Skrin Kunci Kalendar datang dalam dua perisa, membolehkan anda menjejaki masa acara akan datang yang seterusnya, atau menggunakan widget yang lebih besar yang memaparkan nama acara dan masanya. Untuk mula menambah widget, buka kunci iPhone anda menggunakan Face ID atau Touch ID, tekan dan tahan

Bagaimana untuk menyediakan sistem CentOS untuk menyekat pengubahsuaian pengguna pada log sistem Bagaimana untuk menyediakan sistem CentOS untuk menyekat pengubahsuaian pengguna pada log sistem Jul 05, 2023 pm 03:43 PM

Cara menyediakan sistem CentOS untuk menyekat pengguna daripada mengubah suai log sistem Dalam sistem CentOS, log sistem adalah sumber maklumat yang sangat penting Ia merekodkan status pengendalian sistem, mesej ralat, amaran, dsb. Untuk melindungi kestabilan dan keselamatan sistem, kami harus menyekat pengguna daripada mengubah suai log sistem. Artikel ini akan memperkenalkan cara untuk menyediakan sistem CentOS untuk menyekat kebenaran pengubahsuaian log sistem. 1. Buat kumpulan pengguna dan pengguna Pertama, kita perlu mencipta kumpulan pengguna yang bertanggungjawab secara khusus untuk menguruskan log sistem, dan kumpulan pengguna untuk mengurus log sistem.

Dalam JavaScript, apakah tujuan acara 'oninput'? Dalam JavaScript, apakah tujuan acara 'oninput'? Aug 26, 2023 pm 03:17 PM

Apabila nilai ditambah pada kotak input, peristiwa oninput berlaku. Anda boleh cuba menjalankan kod berikut untuk memahami cara melaksanakan acara oninput dalam JavaScript - Contoh<!DOCTYPEhtml><html> <body> <p>Tulis di bawah:</p> <inputtype="text&quot

Bagaimana untuk melaksanakan fungsi kalendar dan peringatan acara dalam projek PHP? Bagaimana untuk melaksanakan fungsi kalendar dan peringatan acara dalam projek PHP? Nov 02, 2023 pm 12:48 PM

Bagaimana untuk melaksanakan fungsi kalendar dan peringatan acara dalam projek PHP? Fungsi kalendar dan peringatan acara adalah salah satu keperluan biasa semasa membangunkan aplikasi web. Sama ada pengurusan jadual peribadi, kerjasama pasukan atau penjadualan acara dalam talian, fungsi kalendar boleh menyediakan pengurusan masa dan pengaturan transaksi yang mudah. Melaksanakan fungsi kalendar dan peringatan acara dalam projek PHP boleh diselesaikan melalui langkah berikut. Reka bentuk pangkalan data Pertama, anda perlu mereka bentuk jadual pangkalan data untuk menyimpan maklumat tentang acara kalendar. Reka bentuk ringkas boleh mengandungi medan berikut: id: unik untuk acara tersebut

Bagaimana untuk menggunakan JavaScript untuk menyeret dan mengezum imej sambil mengehadkannya kepada bekas? Bagaimana untuk menggunakan JavaScript untuk menyeret dan mengezum imej sambil mengehadkannya kepada bekas? Oct 20, 2023 pm 04:19 PM

Bagaimanakah JavaScript melaksanakan penyeretan dan zum imej sambil mengehadkannya kepada bekas? Dalam pembangunan web, kita sering menghadapi keperluan untuk menyeret dan mengezum imej. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk melaksanakan menyeret dan mengezum imej dan mengehadkan operasi dalam bekas. 1. Seret imej Untuk menyeret imej, kita boleh menggunakan peristiwa tetikus untuk menjejaki kedudukan tetikus dan menggerakkan imej dengan sewajarnya. Berikut ialah kod sampel: //Dapatkan varimage elemen gambar

Bagaimana untuk melaksanakan pengikatan peristiwa perubahan bagi elemen terpilih dalam jQuery Bagaimana untuk melaksanakan pengikatan peristiwa perubahan bagi elemen terpilih dalam jQuery Feb 23, 2024 pm 01:12 PM

jQuery ialah perpustakaan JavaScript popular yang boleh digunakan untuk memudahkan manipulasi DOM, pengendalian acara, kesan animasi, dll. Dalam pembangunan web, kami sering menghadapi situasi di mana kami perlu menukar pengikatan acara pada elemen terpilih. Artikel ini akan memperkenalkan cara menggunakan jQuery untuk mengikat acara perubahan elemen terpilih, dan memberikan contoh kod khusus. Pertama, kita perlu mencipta menu lungsur dengan pilihan menggunakan label:

See all articles