Petua praktikal dan kajian kes untuk mengelakkan insiden daripada menggelegak

王林
Lepaskan: 2024-01-13 15:28:16
asal
1370 orang telah melayarinya

. Mekanisme menggelegak ini kadangkala boleh membawa kepada masalah dan ralat yang tidak dijangka. Untuk mengelakkan masalah ini berlaku, kita perlu belajar menggunakan beberapa teknik praktikal untuk mengelakkan kejadian daripada menggelegak. Artikel ini akan memperkenalkan beberapa teknik yang biasa digunakan untuk mengelakkan peristiwa menggelegak, menganalisisnya dengan kes dan memberikan contoh kod khusus.

Petua praktikal dan kajian kes untuk mengelakkan insiden daripada menggelegak1. Gunakan kaedah stopPropagation objek acara

Dalam JavaScript, objek acara (event) menyediakan kaedah stopPropagation, yang boleh digunakan untuk menghalang acara daripada terus menggelembung. Penggunaan kaedah ini sangat mudah, hanya panggil event.stopPropagation() dalam fungsi pemprosesan acara.

Sebagai contoh, terdapat butang dan elemen induk acara klik dalam halaman Apabila butang diklik, halang acara klik daripada menggelegak ke elemen induk:

<div id="parent">
  <button id="btn">点击按钮</button>
</div>

<script>
  const parent = document.getElementById('parent');
  const btn = document.getElementById('btn');

  btn.addEventListener('click', function(event) {
    event.stopPropagation();
    console.log('点击了按钮');
  });

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

Dalam kod di atas, selepas butang. diklik, output dalam konsol adalah Hanya "mengklik butang" tetapi "mengklik elemen induk" tidak dicetuskan, menunjukkan bahawa acara menggelegak berjaya dihalang dengan memanggil kaedah stopPropagation.

2. Gunakan atribut cancelBubble bagi objek acara

Selain menggunakan kaedah stopPropagation, objek acara juga menyediakan atribut cancelBubble, iaitu nilai Boolean. Anda boleh menghalang acara daripada menggelegak dengan menetapkan sifat cancelBubble kepada benar.

Sebagai contoh, dalam halaman terdapat pautan dan acara klik sebagai elemen induk Apabila pautan diklik, elakkan peristiwa klik daripada menggelegak ke elemen induk:

<div id="parent">
  <a href="#" id="link">点击链接</a>
</div>

<script>
  const parent = document.getElementById('parent');
  const link = document.getElementById('link');

  link.addEventListener('click', function(event) {
    event.cancelBubble = true;
    console.log('点击了链接');
  });

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

Dalam kod di atas, selepas mengklik butang. pautan, output dalam konsol hanya "diklik pada pautan" tetapi "diklik pada elemen induk" tidak dicetuskan, menunjukkan bahawa acara menggelegak berjaya dihalang dengan menetapkan atribut cancelBubble kepada benar.

3. Analisis Kes

Kini kami menggunakan kes khusus untuk menganalisis lebih lanjut senario dan teknik untuk mencegah kejadian menggelegak.

Andaikan terdapat berbilang elemen div bersarang dalam halaman, dan setiap elemen div mempunyai acara kliknya sendiri. Sekarang, perkara yang ingin kami capai ialah apabila div paling dalam diklik, hanya peristiwa klik div dicetuskan, tetapi bukan peristiwa klik elemen induknya.

<div id="outer" style="background: yellow;">
  <div id="middle" style="background: blue;">
    <div id="inner" style="background: red;"></div>
  </div>
</div>

<script>
  const outer = document.getElementById('outer');
  const middle = document.getElementById('middle');
  const inner = document.getElementById('inner');

  outer.addEventListener('click', function() {
    console.log('点击了外层div');
  });

  middle.addEventListener('click', function() {
    console.log('点击了中间div');
  });

  inner.addEventListener('click', function(event) {
    event.stopPropagation();
    console.log('点击了最内层div');
  });
</script>
Salin selepas log masuk

Dalam kod di atas, apabila kita mengklik pada div paling dalam, satu-satunya output dalam konsol ialah "diklik pada div paling dalam", tetapi "klik pada div tengah" dan "klik pada div luar" bukan dicetuskan, menunjukkan bahawa peristiwa menggelegak berjaya dihalang dengan memanggil kaedah stopPropagation, mencapai keperluan kita.

Ringkasnya, dengan menggunakan kaedah stopPropagation atau cancelBubble bagi objek acara, anda boleh menghalang acara daripada menggelegak dengan mudah. Dalam pembangunan sebenar, adalah penting untuk memilih teknik yang sesuai untuk mengelakkan acara menggelegak mengikut keperluan tertentu. Semoga artikel ini akan membantu anda menggunakan teknik yang lebih baik untuk mencegah acara menggelegak.

Atas ialah kandungan terperinci Petua praktikal dan kajian kes untuk mengelakkan insiden daripada menggelegak. 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