Rumah  >  Artikel  >  hujung hadapan web  >  Petua praktikal dan kajian kes untuk mengelakkan insiden daripada menggelegak

Petua praktikal dan kajian kes untuk mengelakkan insiden daripada menggelegak

王林
王林asal
2024-01-13 15:28:161318semak imbas

. 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>

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>

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>

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!

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