JavaScript阻止事件冒泡的方法
我們需要注意的是:事件冒泡本身的特性,會帶來的壞處,也會帶來的好處,在后續(xù)的博客我會詳細(xì)說明。
- 所以我們在這里將論述一下如何阻止事件冒泡。
- 比如現(xiàn)在有一個子盒子和一個父盒子,子盒子和父盒子二者都有點(diǎn)擊事件,但是此時,當(dāng)我們點(diǎn)擊子盒子時,只想讓子盒子顯示點(diǎn)擊事件。這里我們就要用到阻止事件冒泡的方法來隔斷父盒子的事件顯示。
先創(chuàng)建兩個盒子,并給他們添加點(diǎn)擊事件,如下所示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .father{ margin: 100px auto; width: 100px; height:100px; overflow: hidden; background-color: palegreen; } .son{ width: 50px; height: 50px; margin-left: 25px; margin-top: 25px; background-color: paleturquoise; } </style> </head> <body> <div class="father"> <div class="son"></div> </div> <script> var father = document.querySelector('.father'); var son = document.querySelector('.son'); son.addEventListener('click',function(){ alert('son'); },false) father.addEventListener('click',function(){ alert('father'); },false) </script> </body> </html>
當(dāng)我們點(diǎn)擊子盒子的點(diǎn)擊事件時,打印結(jié)果為:
我們應(yīng)該怎樣阻斷父盒子的點(diǎn)擊事件呢?
可以直接在子盒子內(nèi)部的點(diǎn)擊事件里面添加stopPropagation()
方法,
如下所示:
son.addEventListener('click',function(e){ alert('son'); e.stopPropagation(); },false)
此時,運(yùn)行結(jié)果為:
阻斷成功。
但是需要注意的是:這個方法也有兼容性問題,在低版本瀏覽器中(IE 6-8 )通常是利用事件對象cancelBubble屬性來操作的。即直接在相應(yīng)的點(diǎn)擊事件里面添加:
e.cancelBubble = true;
如果我們想要解決這種兼容性問題,就可以采用下述方法:
if(e && e.stopPropagation){ e.stopPropagation(); }else{ window.event.cancelBubble = true; }
到此這篇關(guān)于基于JavaScript阻止事件冒泡的文章就介紹到這了,更多相關(guān)JavaScript阻止事件冒泡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)兔年轉(zhuǎn)圈圈動畫示例
這篇文章主要為大家介紹了js實(shí)現(xiàn)兔年轉(zhuǎn)圈圈動畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01一文詳解cornerstone?Tools?基礎(chǔ)概念
這篇文章主要為大家介紹了cornerstone?Tools?基礎(chǔ)概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03JavaScript深拷貝方法structuredClone使用
這篇文章主要為大家介紹了JavaScript深拷貝方法structuredClone使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02requestAnimationFrame定時動畫屏幕刷新率節(jié)流示例淺析
這篇文章主要為大家介紹了requestAnimationFrame定時動畫屏幕刷新率節(jié)流示例淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02