深入分析js的冒泡事件
在javascript的dom操作做肯定會遇到j(luò)s的冒泡事件,最常見的是div彈窗事件如圖解

當(dāng)點擊灰色部分是彈窗消失,點擊黑色部分時沒有效果。
通過下面一段代碼來分析js的冒泡事件
html代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js冒泡事件</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>js冒泡事件分析</h1>
<hr>
<div class="box bg-gray">
<button class="btn">
Click me !
</button>
</div>
</div>
<script>
var box=document.querySelector(".box"),
btn=document.querySelector(".btn");
box.onclick=function(event){
alert("我是div");
}
btn.onclick=function(event){
alert("我是button");
}
</script>
</body>
</html>
使用firefox瀏覽器的默認(rèn)開發(fā)者工具的3d視圖可以清晰的看出div層的先后順序

圖解:

當(dāng)點擊按鈕時會彈出“我是button”再彈出“我是div”,因為先觸發(fā)按鈕事件之后觸發(fā)下一層div點擊事件,
事件的觸發(fā)是先進先出原則。
圖解:

那么有些時候我們并不想多個事件的觸發(fā)而導(dǎo)致沖突,所以event有stopPropagation();方法來阻止冒泡
還有一個event的方法也是比較常用的比如一個鏈接,點擊鏈接時我不想跳轉(zhuǎn),則使用event.preventDefault();方法
實例代碼如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js冒泡事件</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>js冒泡事件分析</h1>
<hr>
<div class="box bg-gray">
<button class="btn">
Click me !
</button>
<a href=" </div>
</div>
<script>
var box=document.querySelector(".box"),
btn=document.querySelector(".btn");
box.onclick=function(event){
alert("我是div");
}
btn.onclick=function(event){
alert("我是button");
event.stopPropagation();
}
document.getElementById('link').onclick=function(event){
alert("我是link");
event.preventDefault();
}
/*區(qū)分event.stopPropagation();和event.preventDefault();
前者使用stopPropagation()方法阻止事件冒泡
后者是阻止默認(rèn)的行為比如阻止超鏈接
*/
</script>
</body>
</html>
小伙伴們是否能夠全面理解js的冒泡事件了呢,有疑問就給我留言吧
- Js冒泡事件詳解及阻止示例
- js阻止默認(rèn)事件與js阻止事件冒泡示例分享 js阻止冒泡事件
- JS阻止冒泡事件以及默認(rèn)事件發(fā)生的簡單方法
- JS冒泡事件的快速解決方法
- Js 冒泡事件阻止實現(xiàn)代碼
- 關(guān)于IE瀏覽器以及Firefox下的javascript冒泡事件的響應(yīng)層級
- js 冒泡事件與事件監(jiān)聽使用分析
- javaScript 事件綁定、事件冒泡、事件捕獲和事件執(zhí)行順序整理總結(jié)
- js事件冒泡、事件捕獲和阻止默認(rèn)事件詳解
- javascript事件冒泡和事件捕獲詳解
- js事件監(jiān)聽機制(事件捕獲)總結(jié)
- js之事件冒泡和事件捕獲詳細介紹
- JS冒泡事件與事件捕獲實例詳解
相關(guān)文章
深入理解JavaScript系列(19):求值策略(Evaluation strategy)詳解
這篇文章主要介紹了深入理解JavaScript系列(19):求值策略(Evaluation strategy)詳解,本文講解了一般理論、按值傳遞、按引用傳遞、按共享傳遞(Call by sharing)、按共享傳遞是按值傳遞的特例等內(nèi)容,需要的朋友可以參考下2015-03-03
實例講解JavaScript中instanceof運算符的用法
JavaScript中的instanceof運算符可以用來判斷對象類型,而更重要的是instanceof能夠判斷對象的繼承關(guān)系,這里我們就來以實例講解JavaScript中instanceof運算符的用法2016-06-06
js中parseFloat(參數(shù)1,參數(shù)2)定義和用法及注意事項
今天在看jquery時用到了parseFloat(第一個參數(shù),10),對這兩個參數(shù)很是疑惑,于是整理搜集了一下,曬出來與大家分享,希望本文對你有所幫助,感興趣的朋友可以了解下2013-01-01

