Rumah > hujung hadapan web > tutorial js > Apakah Perbezaan Antara `event.stopPropagation` dan `event.preventDefault` dalam Pengendalian Acara JavaScript?

Apakah Perbezaan Antara `event.stopPropagation` dan `event.preventDefault` dalam Pengendalian Acara JavaScript?

Barbara Streisand
Lepaskan: 2024-12-17 15:31:17
asal
600 orang telah melayarinya

What's the Difference Between `event.stopPropagation` and `event.preventDefault` in JavaScript Event Handling?

Menyahkan Enigma: event.stopPropagation vs. event.preventDefault

Dalam bidang pengendalian acara, perbezaan antara event.stopPropagation dan event.preventDefault sering meninggalkan pengaturcara bingung. Pada pandangan pertama, kaedah ini kelihatan boleh ditukar ganti, tetapi pemeriksaan lebih dekat mendedahkan peranannya yang berbeza.

stopPropagation vs. preventDefault

  • stopPropagation: Menghalang acara semasa daripada menyebar lebih jauh ke atas rantai penyebaran acara. Ini bermakna ia berkesan menyekat acara daripada mencapai mana-mana elemen induk atau objek dokumen secara keseluruhan.
  • preventDefault: Menghalang tindakan lalai penyemak imbas untuk acara tertentu daripada berlaku. Sebagai contoh, jika acara klik dicetuskan pada pautan, preventDefault akan menghalang pautan daripada diikuti.

Perspektif Sejarah

Event.stopPropagation mendahului acara .preventDefault.Dalam lelaran JavaScript yang lebih awal, preventDefault tidak tersedia dan pembangun terpaksa bergantung pada pemulangan false daripada fungsi pengendali acara untuk meniru fungsinya, yang tidak disokong sepenuhnya oleh pendengar acara yang ditambahkan melalui addEventListener.

Sokongan Penyemak Imbas

Kedua-dua acara.stopPropagation dan acara .preventDefault disokong secara meluas oleh penyemak imbas moden. Walau bagaimanapun, sentiasa disyorkan untuk merujuk jadual keserasian penyemak imbas untuk butiran khusus.

Pertimbangan Penggunaan

Secara amnya dinasihatkan untuk menggunakan event.stopPropagation apabila anda ingin menghentikan penyebaran selanjutnya acara sehingga fasa menggelegak atau menangkap acara. Ini berguna untuk senario di mana anda mempunyai elemen bersarang dan ingin menghalang acara daripada mencetuskan tindakan pada berbilang peringkat.

Sebaliknya, event.preventDefault adalah sesuai apabila anda ingin menghalang kelakuan lalai penyemak imbas untuk peristiwa tertentu. Contohnya, anda boleh menggunakannya untuk menghalang pautan daripada menavigasi ke URL lain atau menghentikan borang daripada menyerahkan.

Contoh:

Contoh berikut menggambarkan perbezaan antara event.stopPropagation dan event.preventDefault:


 event.preventDefault()<br>})<br>$("#foo").click(function () {<br> alert("parent klik acara dicetuskan!")<br>})

<div> <butang id="but">button</button><br></div>

Apabila butang dengan id "tetapi" diklik, event.preventDefault dipanggil, menghalang kelakuan lalai penyemak imbas, yang biasanya menavigasi ke URL lain. Walau bagaimanapun, peristiwa klik masih merambat ke div induk, mencetuskan peristiwa klik pada elemen tersebut. Ini menunjukkan perbezaan antara event.preventDefault, yang mempengaruhi tindakan penyemak imbas dan event.stopPropagation, yang mempengaruhi penyebaran acara.

Atas ialah kandungan terperinci Apakah Perbezaan Antara `event.stopPropagation` dan `event.preventDefault` dalam Pengendalian Acara JavaScript?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan