stopPropagation
menghentikan acara dari menggelegak rantai acara.
preventDefault
mencegah tindakan default yang dilakukan browser pada acara tersebut.
Contohnya
mencegah Kerusakan
$("#but").click(function (event) {
event.preventDefault()
})
$("#foo").click(function () {
alert("parent click event fired!")
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
<button id="but">button</button>
</div>
stopPropagation
$("#but").click(function (event) {
event.stopPropagation()
})
$("#foo").click(function () {
alert("parent click event fired!")
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
<button id="but">button</button>
</div>
Dengan stopPropagation
, hanya button
penangan klik yang dipanggil sementara div
penangan klik tidak pernah menyala.
Di mana seolah-olah Anda menggunakan preventDefault
, hanya tindakan default browser yang dihentikan tetapi penangan klik div masih menyala.
Berikut adalah beberapa dokumen tentang properti acara DOM dan metode dari MDN:
Untuk IE9 dan FF Anda bisa menggunakan preventDefault & stopPropagation.
Untuk mendukung IE8 dan lebih rendah ganti stopPropagation
dengan cancelBubble
dan ganti preventDefault
denganreturnValue
event.stop
fungsinya ... Juga aneh aku tidak pernah punya masalah dengan itu. Saya menggunakan banyak menggelegak. Terima kasih untuk contohnya!cancelBubble
danreturnValue
keduanya adalah properti (jadi harus ditetapkancancelBubble = true;
), dan itupreventDefault
danstopPropagation
metode (jadi harus disebutpreventDefault();
)stopDefault()
tidak bekerja dengan cara yang samastopPropagation()
. Jika tindakan default tidak memanggilonclick
metode apa itu?Terminologi
Dari quirksmode.org :
Antarmuka
Dari w3.org , untuk acara tangkap :
Untuk acara bubbling :
Untuk pembatalan acara :
Contohnya
Dalam contoh berikut, klik pada tautan di browser web memicu aliran acara (pendengar acara dieksekusi) dan tindakan default target acara (tab baru dibuka).
HTML:
JavaScript:
Contoh 1 : menghasilkan output
Contoh 2 : menambahkan
stopPropagation()
ke fungsimenghasilkan output
Pendengar acara mencegah penyebaran lebih lanjut ke bawah dan ke atas dari acara tersebut. Namun itu tidak mencegah tindakan default (pembukaan tab baru).
Contoh 3 : menambahkan
stopPropagation()
ke fungsiatau fungsinya
menghasilkan output
Ini karena kedua pendengar acara terdaftar pada target acara yang sama. Pendengar acara mencegah penyebaran lebih lanjut dari acara tersebut. Namun mereka tidak mencegah tindakan default (pembukaan tab baru).
Contoh 4 : menambahkan
preventDefault()
ke fungsi apa pun, misalnyamencegah tab baru dari pembukaan.
sumber
return false;
return false;
melakukan 3 hal yang terpisah ketika Anda menyebutnya:event.preventDefault()
- Ini menghentikan perilaku default browser.event.stopPropagation()
- Ini mencegah acara dari menyebarkan (atau "menggelegak") DOM.Perhatikan bahwa perilaku ini berbeda dari penangan acara normal (non-jQuery), di mana, terutama,
return false
tidak menghentikan peristiwa dari menggelegak.preventDefault ();
preventDefault();
melakukan satu hal: Ini menghentikan perilaku default browser.Kapan menggunakannya?
Kita tahu apa yang mereka lakukan tetapi kapan menggunakannya? Cukup tergantung pada apa yang ingin Anda capai. Gunakan
preventDefault();
jika Anda ingin "hanya" mencegah perilaku browser default. Gunakan return false; ketika Anda ingin mencegah perilaku browser default dan mencegah acara tersebut menyebarkan DOM. Dalam sebagian besar situasi di mana Anda akan menggunakan return false; apa yang sebenarnya Anda inginkan adalahpreventDefault()
.Contoh:
Mari kita coba pahami dengan contoh:
Kita akan melihat contoh JAVASCRIPT murni
Contoh 1:
Contoh 2:
Contoh 3:
Contoh 4:
Contoh 5:
kasus:
Akan melihat ketiga contohnya.
Semoga contoh-contoh ini jelas. Coba jalankan semua contoh ini dalam file html untuk melihat cara kerjanya.
sumber
Ini adalah kutipan dari sini
Event.preventDefault
Metode preventDefault mencegah acara menjalankan fungsi defaultnya. Misalnya, Anda akan menggunakan preventDefault pada elemen A untuk berhenti mengklik elemen itu dari meninggalkan halaman saat ini:
Sementara fungsionalitas default elemen adalah bricked, event terus melembungkan DOM.
Event.stopPropagation
Metode kedua, stopPropagation, memungkinkan fungsionalitas default acara terjadi tetapi mencegah agar acara tidak menyebar:
stopPropagation secara efektif menghentikan elemen orangtua untuk mengetahui tentang peristiwa tertentu pada anaknya.
sumber
Event.preventDefault- menghentikan perilaku default browser. Sekarang tlah perilaku browser default. Asumsikan Anda memiliki tag jangkar dan telah mendapat atribut href dan tag jangkar ini bersarang di dalam tag div yang telah mendapat event klik. Perilaku default dari anchor tag adalah ketika diklik pada anchor tag yang seharusnya ia navigasikan, tetapi yang dilakukan event.preventDefault adalah menghentikan navigasi dalam hal ini. Tapi itu tidak pernah berhenti dari peristiwa atau eskalasi acara yaitu
Hasilnya akan
"elemen diklik"
"kontainer diklik"
Sekarang event. StopPropation itu berhenti menggelegak acara atau eskalasi acara. Sekarang dengan contoh di atas
Hasilnya akan
"elemen diklik"
Untuk info lebih lanjut lihat tautan ini https://codeplanet.io/preventdefault-vs-stoppropagation-vs-stopimmediatepropagation/
sumber
event.preventDefault();
Menghentikan aksi default suatu elemen agar tidak terjadi.event.stopPropagation();
Mencegah peristiwa menggelegak pohon DOM, mencegah penangan orang tua diberitahu tentang acara tersebut.Misalnya, jika ada tautan dengan metode klik terlampir di dalam
DIV
atauFORM
yang juga memiliki metode klik terlampir, itu akan mencegahDIV
atauFORM
klik metode dari penembakan.sumber
sumber