国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

在點擊div中的p時,如何阻止事件冒泡

2019-11-19 17:42:11
字體:
來源:轉載
供稿:網友

今天整理筆記,發現在學習javaScript的過程中,遇到過一個在當時看來很棘手的問題,現在特地總結一下,也希望能幫助到曾像我一樣迷惘的初學者。

我還是以一個案例來說明問題,html代碼如下:

 <div onclick="show('a')">   <p onclick="show('b')"></p> </div>

css代碼如下:

div{  width:500px;  height:500px;  background:red; } p{  width:200px;  height:200px;  background:blue; }

js代碼如下:

 function show(info){    alert(info); }

稍微懂點js的人都知道當我點擊p時,基于事件冒泡機制,會觸發父元素div的onclick事件,結果是先彈出b、再彈出a。

那么問題來了,如何修改show()這個函數而只彈出b?我第一次的解決方法是(各位大神勿噴):

function show(e,info){ function cancelBubble(e){  e = e || window.event;  if (e.stopPropagation) {       e.stopPropagation();   }else {        e.cancelBubble = true;   }  } alert(info);}

結果老是報錯。我就開始各種百度,最終解決方法如下:

function show(info){   alert(info);   cancelBubble();}function cancelBubble(e) {    var evt = e ? e : window.event;     if (evt.stopPropagation) {  //W3C      evt.stopPropagation();     }else {  //IE       evt.cancelBubble = true;     } }

至于為什么這樣?我分析的是這樣做有兩個好處:1.阻止了事件冒泡,達到只彈出b目的; 2.將阻止事件冒泡的代碼封裝成了一個函數,可以多次調用。

好了,問題圓滿解決。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉田县| 通江县| 多伦县| 金溪县| 东至县| 岑巩县| 满洲里市| 岳池县| 南昌县| 涟源市| 贡觉县| 申扎县| 南平市| 谢通门县| 通州市| 麻栗坡县| 凯里市| 石楼县| 新和县| 屯门区| 汤阴县| 文昌市| 凤山县| 云阳县| 湘阴县| 乌兰县| 榆林市| 柳江县| 芦溪县| 石台县| 宁国市| 上思县| 大竹县| 浪卡子县| 兰西县| 唐河县| 营山县| 昭觉县| 桂林市| 平乡县| 工布江达县|