JS冒泡事件的快速解決方法
何為冒泡事件
就是當(dāng)設(shè)定了多個(gè)div的嵌套時(shí);即建立了父子關(guān)系,當(dāng)父div與子div共同加入了onclick事件時(shí),當(dāng)觸發(fā)了子div的onclick事件后,子div進(jìn)行相應(yīng)的js操作。但是父div的onclick事件同樣會(huì)被觸發(fā)。這就造成了事件的多層并發(fā),導(dǎo)致了頁(yè)面混亂。這就是冒泡事件。
消除冒泡事件的方法
阻止JavaScript事件冒泡傳遞(cancelBubble 、stopPropagation)
下面的一段代碼即可以很好的解釋是么是冒泡效果,什么叫消除冒泡效果
<html>
<head>
<title> 阻止JavaScript事件冒泡傳遞(cancelBubble 、stopPropagation)</title>
<meta name="keywords" content="JavaScript,事件冒泡,cancelBubble,stopPropagation" />
<script type="text/javascript">
function doSomething (obj,evt) {
alert(obj.id);
var e=(evt)?evt:window.event; //判斷瀏覽器的類(lèi)型,在基于ie內(nèi)核的瀏覽器中的使用cancelBubble
if (window.event) {
e.cancelBubble=true;
} else {
//e.preventDefault(); //在基于firefox內(nèi)核的瀏覽器中支持做法stopPropagation
e.stopPropagation();
}
}
</script>
</head>
<body>
<div id="parent1" onclick="alert(this.id)" style="width:250px;background-color:yellow">
<p>This is parent1 div.</p>
<div id="child1" onclick="alert(this.id)" style="width:200px;background-color:orange">
<p>This is child1.</p>
</div>
<p>This is parent1 div.</p>
</div>
<br />
<div id="parent2" onclick="alert(this.id)" style="width:250px;background-color:cyan;">
<p>This is parent2 div.</p>
<div id="child2" onclick="doSomething(this,event);" style="width:200px;background-color:lightblue;">
<p>This is child2. Will bubble.</p>
</div>
<p>This is parent2 div.</p>
</div>
</body>
</html>
把代碼直接復(fù)制后,打開(kāi)當(dāng)點(diǎn)擊child1時(shí)不僅會(huì)彈出 child1 對(duì)話框還會(huì)彈出 parent1
這就是冒泡事件
但是單擊chile2只會(huì)彈出child2卻不會(huì)彈出 parent2,這便是應(yīng)用了阻止冒泡事件的特效的效果.
- js之事件冒泡和事件捕獲詳細(xì)介紹
- js阻止默認(rèn)事件與js阻止事件冒泡示例分享 js阻止冒泡事件
- javascript事件冒泡詳解和捕獲、阻止方法
- js冒泡、捕獲事件及阻止冒泡方法詳細(xì)總結(jié)
- js阻止冒泡及jquery阻止事件冒泡示例介紹
- zepto.js中tap事件阻止冒泡的實(shí)現(xiàn)方法
- js event事件的傳遞與冒泡處理
- JS阻止冒泡事件以及默認(rèn)事件發(fā)生的簡(jiǎn)單方法
- js如何取消事件冒泡
- js事件監(jiān)聽(tīng)機(jī)制(事件捕獲)總結(jié)
- JavaScript 捕獲窗口關(guān)閉事件
- Javascript 事件捕獲的備忘(setCapture,captureEvents)
- JavaScript實(shí)現(xiàn)父子dom同時(shí)綁定兩個(gè)點(diǎn)擊事件,一個(gè)用捕獲,一個(gè)用冒泡時(shí)執(zhí)行順序的方法
相關(guān)文章
深入理解JavaScript系列(28):設(shè)計(jì)模式之工廠模式詳解
這篇文章主要介紹了深入理解JavaScript系列(28):設(shè)計(jì)模式之工廠模式詳解,工廠模式定義一個(gè)用于創(chuàng)建對(duì)象的接口,這個(gè)接口由子類(lèi)決定實(shí)例化哪一個(gè)類(lèi),需要的朋友可以參考下2015-03-03微信小程序MUI側(cè)滑導(dǎo)航菜單示例(Popup彈出式,左側(cè)滑動(dòng),右側(cè)不動(dòng))
這篇文章主要介紹了微信小程序MUI側(cè)滑導(dǎo)航菜單,結(jié)合實(shí)例形式分析了微信小程序Popup彈出式,左側(cè)滑動(dòng),右側(cè)不動(dòng)菜單功能相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2019-01-01javascript中動(dòng)態(tài)函數(shù)用法實(shí)例分析
這篇文章主要介紹了javascript中動(dòng)態(tài)函數(shù)用法,實(shí)例分析了動(dòng)態(tài)函數(shù)的定義方法與使用技巧,需要的朋友可以參考下2015-05-05JS實(shí)現(xiàn)Select的option上下移動(dòng)的方法
這篇文章主要介紹了JS實(shí)現(xiàn)Select的option上下移動(dòng)的方法,涉及JavaScript動(dòng)態(tài)操作頁(yè)面元素的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-03-03巧妙解決Layui.table組件分頁(yè)問(wèn)題示例
這篇文章主要為大家介紹了巧妙解決Layui.table組件分頁(yè)問(wèn)題方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09javascript當(dāng)onmousedown、onmouseup、onclick同時(shí)應(yīng)用于同一個(gè)標(biāo)簽節(jié)點(diǎn)Element
先通過(guò)一個(gè)簡(jiǎn)單例子測(cè)試并發(fā)現(xiàn)我說(shuō)的問(wèn)題,讓你有個(gè)直觀的印象,再接著看我的解決辦法。2010-01-01JavaScript省市級(jí)聯(lián)下拉菜單實(shí)例
這篇文章主要為大家詳細(xì)介紹了JavaScript省市級(jí)聯(lián)下拉菜單實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02bootstrap table插件動(dòng)態(tài)加載表頭
這篇文章主要為大家詳細(xì)介紹了bootstrap table插件動(dòng)態(tài)加載表頭,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07