Rumah  >  Artikel  >  hujung hadapan web  >  Cara untuk memastikan acara menggelegak tidak menyebabkan masalah yang tidak perlu

Cara untuk memastikan acara menggelegak tidak menyebabkan masalah yang tidak perlu

PHPz
PHPzasal
2024-01-12 16:41:06693semak imbas

Cara untuk memastikan acara menggelegak tidak menyebabkan masalah yang tidak perlu

Cara mengelakkan masalah yang tidak perlu yang disebabkan oleh peristiwa menggelegak memerlukan contoh kod khusus

Peristiwa menggelegak bermakna apabila peristiwa pada elemen dicetuskan, peristiwa yang sama pada elemen induk bersebelahan juga akan dicetuskan. Mekanisme penyebaran peristiwa ini mungkin menyebabkan beberapa masalah yang tidak perlu, seperti tidak dapat menangkap sumber acara dengan tepat dan menyebabkan masalah prestasi. Untuk mengelakkan masalah ini, kami boleh mengambil beberapa langkah untuk mengelakkan peristiwa daripada menggelegak Artikel ini akan memperkenalkan beberapa kaedah biasa dan menyediakan contoh kod yang sepadan untuk rujukan.

1. Gunakan kaedah stopPropagation()

Kaedah stopPropagation() boleh menghalang acara daripada menggelegak daripada terus menyebar, dengan itu hanya mencetuskan acara pada elemen semasa dan tidak mencetuskan acara yang sama pada elemen induk yang lain. Panggil sahaja kaedah ini dalam fungsi pengendalian acara.

Kod sampel adalah seperti berikut:

<div id="parent">
  <div id="child">
    <button id="btn">点击触发事件</button>
  </div>
</div>

<script>
document.getElementById('btn').addEventListener('click', function(e) {
  console.log('子元素被点击');
  e.stopPropagation();
});

document.getElementById('child').addEventListener('click', function() {
  console.log('子元素的父元素被点击');
});

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

Selepas menjalankan kod di atas, apabila butang diklik, hanya mesej bahawa elemen kanak-kanak telah diklik akan dicetuskan, tetapi bukan mesej bahawa elemen induk telah diklik.

2. Gunakan delegasi acara

Delegasi acara bermaksud mengikat acara kepada elemen induk, menilai sumber acara melalui atribut acara.sasaran dan melaksanakan operasi yang sepadan. Dengan cara ini, anda boleh mengelak mengikat fungsi pengendalian acara kepada setiap elemen anak, mengurangkan lebihan kod dan kerumitan penyelenggaraan.

Kod sampel adalah seperti berikut:

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

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

Selepas menjalankan kod di atas, kandungan teks yang sepadan akan dicetak apabila setiap pilihan diklik, tanpa mengikat acara klik pada setiap pilihan.

3. Gunakan kaedah stopImmediatePropagation()

Kaedah stopImmediatePropagation() bukan sahaja boleh menghalang peristiwa daripada menggelegak, tetapi juga menghalang pelaksanaan selanjutnya fungsi pemprosesan acara, dengan itu menghalang peristiwa lain yang berkaitan daripada dicetuskan. Panggil sahaja kaedah ini dalam fungsi pengendalian acara.

Kod sampel adalah seperti berikut:

<div>
  <button id="btn1">按钮1</button>
  <button id="btn2">按钮2</button>
</div>

<script>
document.getElementById('btn1').addEventListener('click', function(e) {
  console.log('按钮1被点击');
  e.stopImmediatePropagation();
});

document.getElementById('btn1').addEventListener('click', function() {
  console.log('按钮1被点击,但此函数不会执行');
});

document.getElementById('btn2').addEventListener('click', function() {
  console.log('按钮2被点击');
});
</script>

Selepas menjalankan kod di atas, apabila butang 1 diklik, hanya mesej bahawa butang 1 diklik akan dicetuskan, dan peristiwa klik terikat kedua tidak akan dicetuskan.

Ringkasnya, kita boleh mengelakkan masalah yang tidak perlu yang disebabkan oleh peristiwa menggelegak dengan menggunakan kaedah stopPropagation(), delegasi acara dan kaedah stopImmediatePropagation(). Kaedah ini boleh mengurus penyebaran peristiwa dengan berkesan dan meningkatkan kebolehbacaan dan prestasi kod. Kami berharap contoh kod yang disediakan dalam artikel ini dapat membantu pembaca memahami dan menggunakan pengetahuan yang berkaitan dengan lebih baik.

Atas ialah kandungan terperinci Cara untuk memastikan acara menggelegak tidak menyebabkan masalah yang tidak perlu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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