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