Rumah hujung hadapan web tutorial js Js冒泡事件详解及阻止示例_javascript技巧

Js冒泡事件详解及阻止示例_javascript技巧

May 16, 2016 pm 04:54 PM
peristiwa menggelegak Cegah

Js冒泡机制是指如果某元素定义了事件A,如click事件,如果触发了事件之后,没有阻止冒泡事件,那么事件将向父级元素传播,触发父类的click函数。
如下例所示:

复制代码 代码如下:



<script> <BR>function ialertdouble(e) { <BR>alert('innerdouble'); <BR>stopBubble(e); <BR>} <br><br>function ialertthree(e) { <BR>alert('innerthree'); <BR>stopBubbleDouble(e); <BR>} <br><br>function stopBubble(e) { <BR>var evt = e||window.event; <BR>evt.stopPropagation?evt.stopPropagation():(evt.cancelBubble=true);//阻止冒泡 <BR>} <br><br>function stopBubbleDouble(e) { <BR>var evt = e||window.event; <BR>evt.stopPropagation?evt.stopPropagation():(evt.cancelBubble=true);//阻止冒泡 <BR>evt.preventDefault();//阻止浏览器默认行为,这样链接就不会跳转 <BR>} <br><br>$(function() { <BR>//方法一 <BR>//$('#jquerytest').click(function(event) { <BR>// alert('innerfour'); <BR>// event.stopPropagation(); <BR>// event.preventDefault(); <BR>//}); <br><br>//方法二 <BR>$('#jquerytest').click(function() { <BR>alert('innerfour'); <BR>return false; <BR>}); <BR>}); <BR></script>
without
middle
inner

innerdouble

innerthree


innerfour






当你点击inner的时候,会依次弹出‘inner',‘middle'和‘without'。这就是事件冒泡。

从直观上来看,也是这样的,因为最里层的区域是在父级节点中的,点击了子级节点的区域,其实也是点击了父级节点的区域,所以事件会传播起来。

其实,很多的时候,我们并不想事件冒泡,因为这样会同时触发几个事件。

接下来:我们点击innerdouble。就会发现她并没有冒泡,因为她在调用的方法ialertdouble()中调用了stopBubble()方法,方法通过判断浏览器类型(Ie通过cancleBubble() 、firefox通过stopProgation())来阻止冒泡。

但如果是链接的话,我们会发现她也会阻止冒泡,但是会跳转,这就是浏览器的默认行为。需要借助preventDefault()方法来阻止。具体可以查看ialertthree()。

目前主流的都是借助jquery来绑定click事件的,这样的话,就简单多了。

我们可以在点击事件时传入参数event,然后直接

event.stopPropagation();
event.preventDefault(); //没有链接不需要加这个。

这样就可以了。

框架就是好,其实还有更简单的,在事件处理程序中返回false,这是对在事件对象上同时调用stopPropagation()和preventDefault()的一种简写方式。
【详细代码见上面,记得载入jquery.js。】

其实也还可以在每个click事件中加入判断:
复制代码 代码如下:

$('#id').click(function(event){
if(event.target==this){
//do something
}
})

解析:事件处理程序中的变量event保存着事件对象。而event.target属性保存着发生事件的目标元素。这个属性是DOM API中规定的,但是没有被所有浏览器实现 。jQuery对这个事件对象进行了必要的扩展,从而在任何浏览器中都能够使用这个属性。通过.target,可以确定DOM中首先接收到事件的元素(即实际被单击的元素)。而且,我们知道this引用的是处理事件的DOM元素,所以可以编写以上代码。

不过推荐使用return false,Jquery绑定事件的话。
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyekat akses kepada tapak web di Edge Bagaimana untuk menyekat akses kepada tapak web di Edge Jul 12, 2023 am 08:17 AM

Kadangkala, kami ingin menyekat tapak web tertentu di Microsoft Edge atas pelbagai sebab, sama ada untuk kawalan ibu bapa, pengurusan masa, penapisan kandungan, atau juga kebimbangan keselamatan. Motivasi biasa adalah untuk menjadi lebih produktif dan kekal fokus. Dengan menyekat tapak web yang mengganggu, orang ramai boleh mewujudkan persekitaran yang kondusif untuk bekerja atau belajar, meminimumkan potensi gangguan. Akhir sekali, penapisan kandungan adalah penting untuk mengekalkan persekitaran dalam talian yang selamat dan menghormati. Menyekat tapak web yang mengandungi kandungan eksplisit, menyinggung perasaan atau tidak menyenangkan adalah amat penting dalam tetapan pendidikan atau profesional di mana menegakkan standard dan nilai yang sesuai adalah penting. Jika anda boleh mengaitkan dengan situasi ini, artikel ini adalah untuk anda. Begini cara untuk menyekat akses kepada Internet di Edge

Bagaimana untuk mengelakkan kebocoran memori dengan berkesan dalam penutupan? Bagaimana untuk mengelakkan kebocoran memori dengan berkesan dalam penutupan? Jan 13, 2024 pm 12:46 PM

Bagaimana untuk mengelakkan kebocoran memori dalam penutupan? Penutupan ialah salah satu ciri yang paling berkuasa dalam JavaScript, yang membolehkan sarang fungsi dan enkapsulasi data. Walau bagaimanapun, penutupan juga terdedah kepada kebocoran memori, terutamanya apabila berurusan dengan tak segerak dan pemasa. Artikel ini menerangkan cara untuk mengelakkan kebocoran memori dalam penutupan dan menyediakan contoh kod khusus. Kebocoran memori biasanya berlaku apabila objek tidak lagi diperlukan tetapi memori yang didudukinya tidak dapat dilepaskan atas sebab tertentu. Dalam penutupan, apabila fungsi merujuk kepada pembolehubah luaran, dan pembolehubah ini

Bagaimana untuk menyekat mesej teks pada iPhone Bagaimana untuk menyekat mesej teks pada iPhone Jul 31, 2023 pm 09:49 PM

Bagaimana untuk menyekat mesej teks daripada seseorang di iPhone? Jika anda menerima mesej teks daripada seseorang yang ingin anda sekat, anda perlu membuka mesej itu pada iPhone anda. Setelah anda membuka mesej, klik pada ikon di bahagian atas dengan nombor telefon atau nama pengirim di bawahnya. Sekarang klik pada Mesej di sebelah kanan skrin; kini anda akan melihat skrin lain dengan pilihan untuk menyekat pemanggil ini. Klik butang ini dan pilih Sekat Kenalan. Nombor telefon tidak lagi akan dapat menghantar mesej teks kepada anda juga akan disekat daripada menghubungi iPhone anda. Bagaimana untuk menyahsekat kenalan yang disekat pada iPhone? Jika anda memutuskan untuk membenarkan orang yang disekat menghantar mesej kepada anda, anda boleh menyahsekat mereka pada iPhone anda pada bila-bila masa. Untuk menyahsekat kenalan pada iPhone, anda perlu

Tiada sokongan untuk acara menggelegak: had dan skop Tiada sokongan untuk acara menggelegak: had dan skop Jan 13, 2024 pm 12:51 PM

Acara menggelegak (BubblingEvent) merujuk kepada kaedah penghantaran acara yang dicetuskan langkah demi langkah daripada elemen anak kepada elemen induk dalam pepohon DOM. Dalam kebanyakan kes, peristiwa menggelegak adalah sangat fleksibel dan berskala, tetapi terdapat beberapa kes khas di mana peristiwa tidak menyokong menggelegak. 1. Peristiwa yang manakah tidak menyokong menggelegak? Walaupun kebanyakan acara menyokong menggelegak, terdapat beberapa acara yang tidak menyokong menggelegak. Berikut ialah beberapa peristiwa biasa yang tidak menyokong menggelegak: fokus dan kaburkan acara memuatkan dan melepaskan

Apakah peristiwa yang tidak boleh timbul? Apakah peristiwa yang tidak boleh timbul? Nov 20, 2023 pm 03:00 PM

Peristiwa yang tidak boleh gelembung ialah: 1. acara fokus; 3. acara tatal; ; 9. Acara DOMContentLoaded;

Mengapakah peristiwa gagal timbul? Mengapakah peristiwa gagal timbul? Jan 13, 2024 am 08:50 AM

Mengapakah peristiwa tidak timbul dalam beberapa kes? Peristiwa menggelegak bermakna apabila peristiwa pada elemen dicetuskan, peristiwa itu akan merambat ke atas bermula dari elemen paling dalam sehingga ia dihantar ke elemen paling luar. Tetapi dalam beberapa kes, acara tidak boleh menggelembung, iaitu, acara hanya akan diproses pada elemen yang dicetuskan dan tidak akan dihantar kepada elemen lain. Artikel ini akan memperkenalkan beberapa situasi biasa, membincangkan sebab peristiwa gagal menggelegak dan memberikan contoh kod khusus. Gunakan corak tangkapan acara: Tangkapan acara ialah satu lagi cara penyampaian acara, berbanding acara menggelegak.

Bagaimana untuk membetulkan muat turun perisian yang disekat dalam Windows 10 Bagaimana untuk membetulkan muat turun perisian yang disekat dalam Windows 10 Dec 21, 2023 pm 11:58 PM

Semasa kami menggunakan sistem win10, beberapa rakan mengalami sekatan yang tidak dapat dijelaskan semasa memuat turun sesuatu. Untuk situasi ini, editor berpendapat ia sepatutnya menjadi masalah dengan tembok api sistem. Anda boleh cuba membuat tetapan yang berkaitan dalam pendaftaran untuk menyelesaikan masalah, atau gunakan mod keserasian dalam sifat untuk membuka perisian, dsb. untuk menyelesaikan masalah. Mari kita lihat langkah-langkah khusus dan terperinci dengan editor~ Saya harap ia dapat membantu anda. Apa yang perlu dilakukan jika perisian Windows 10 disekat daripada memuat turun Kaedah 1: Mod Keserasian 1. Klik kanan aplikasi, klik "Properties" dalam menu, pilih tab "Keserasian" dan tandai kotak pilihan "Mod Keserasian". Kaedah 2: Ubah suai tetapan keselamatan Cari "Tetapan" di sudut kiri bawah, kemudian "Kemas kini dan Keselamatan", dan akhirnya "Windows D

Kuasai mekanisme menggelegak acara biasa dalam JavaScript Kuasai mekanisme menggelegak acara biasa dalam JavaScript Feb 19, 2024 pm 04:43 PM

Peristiwa menggelegak biasa dalam JavaScript: Untuk menguasai ciri menggelegak acara biasa, contoh kod khusus diperlukan Pengenalan: Dalam JavaScript, acara menggelegak bermakna peristiwa itu akan merambat dari elemen dengan tahap bersarang paling dalam ke elemen luar sehingga ia merambat ke. Unsur induk paling luar. Memahami dan menguasai acara menggelegak biasa boleh membantu kami mengendalikan interaksi pengguna dan pengendalian acara dengan lebih baik. Artikel ini akan memperkenalkan beberapa peristiwa menggelegak biasa dan memberikan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. 1. Klik acara (klik

See all articles