欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解javascript事件冒泡

 更新時間:2016年01月09日 19:11:46   投稿:lijiao  
這篇文章主要向大家介紹了javascript事件冒泡,以及javascript阻止事件冒泡的實現(xiàn)代碼,感興趣的朋友可以參考一下

事件是javascript中的核心內(nèi)容之一,在對事件的應(yīng)用中不可避免的要涉及到一個重要的概念,那就是事件冒泡,在介紹事件冒泡之前,先介紹一下另一個重要的概念事件流:
一.什么是事件流:
文檔對象模型(DOM)是一個樹形結(jié)構(gòu),可以形象的用下圖表示。

如果一個html元素觸發(fā)事件,那么這個事件就會在DOM樹中的觸發(fā)節(jié)點和根節(jié)點之間按照一定的順序傳播,所有經(jīng)過的節(jié)點都會接收到被觸發(fā)的事件,這個傳播過程被稱之為事件流。按照事件的傳播順序,可以將其分為兩類,一種是事件冒泡,一種是事件捕獲,這里就涉及到本章要介紹的主題了:
1.事件冒泡:
所謂的時間冒泡就是當(dāng)一個元素觸發(fā)一個事件,事件會像是水泡一樣,從觸發(fā)元素向它的所有父節(jié)點傳播,一直到根節(jié)點都會接收到此事件,如果父元素中注冊了相應(yīng)的事件處理函數(shù),那么盡管事件在子節(jié)點觸發(fā)的,在父元素上注冊的事件處理函數(shù)同樣會被觸發(fā)。例如在上面圖示中,如果觸發(fā)a元素的onclick事件,那么它的父元素p、document和widow都會接收到此事件,并且如果在相應(yīng)的父元素注冊有時間處理函數(shù),那么此事件處理函數(shù)將會執(zhí)行,看一段代碼實例:

<html>
<head>
<meta charset="utf-8"/>
<title>事件冒泡簡單介紹</title>
<script type="text/javascript">
window.onload=function(){
 var table=document.getElementById("mytable");
 table.onclick=function(e){
 var event=e||window.event;
 target=event.srcElement||event.target;
 alert(target.innerHTML);
 }
}
</script>
</head>
<body>
<table width="400" border="1" id="mytable">
<tr>
 <td>腳本之家</td>
 <td>腳本之家</td>
 <td>腳本之家</td>
</tr>
<tr>
 <td>腳本之家</td>
 <td>腳本之家</td>
 <td>腳本之家</td>
</tr>
<tr>
 <td>腳本之家</td>
 <td>腳本之家</td>
 <td>腳本之家</td>
</tr>
</table>
</body>
</html>

以上代碼的目的是,當(dāng)點擊相應(yīng)的單元格的時候就會彈出對應(yīng)單元格中的內(nèi)容。但是在上面的實現(xiàn)中并不是為每一個單元格注冊onclick事件處理函數(shù),而是將onclick事件處理函數(shù)注冊于單元格的父元素table上,當(dāng)點擊單元格的時候會觸發(fā)onclick事件,事件還會從從事件對象向上傳播,而table元素恰好有注冊的onclick事件處理函數(shù),這個時候就會執(zhí)行此處理函數(shù),當(dāng)然這里會設(shè)置到傳遞事件對象參數(shù)的問題。所有的瀏覽器都支持事件冒泡。二.事件捕獲:
事件捕獲和事件冒泡恰好相反,當(dāng)點擊一個元素的時候,事件傳播的方向是從根元素到觸發(fā)元素,IE瀏覽器并不支持,為了跨瀏覽器支持,所以默認情況下一般都是使用冒泡型事件處理模型。
2.javascript阻止事件冒泡代碼
事件冒泡在某些場景非常的有用,但是有時候也是必須要阻止,下面是一段能夠兼容所有主流瀏覽器的阻止事件冒泡的實例代碼。
代碼實例:

function stopBubble(e) 
{ 
 if(e&&e.stopPropagation) 
 { 
 e.stopPropagation(); 
 } 
 else
 { 
 window.event.cancelBubble=true; 
 } 
}

以上代碼可以阻止事件冒泡,下面對代碼做一下簡單注釋:
二、代碼注釋:

  • 1.function stopBubble(e) {},此函數(shù)用來阻止事件冒泡,參數(shù)是個事件對象。
  • 2. if(e&&e.stopPropagation){e.stopPropagation();},判斷是否支持stopPropagation,如果支持就使用e.stopPropagation()。stopPropagation()函數(shù)IE10和IE10以下瀏覽器不支持。
  • 3.window.event.cancelBubble=true,當(dāng)前IE瀏覽器使用這個可以阻止事件冒泡。

以上就是關(guān)于javascript事件冒泡的詳細介紹,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • javascript簡單實現(xiàn)類似QQ頭像彈出效果的方法

    javascript簡單實現(xiàn)類似QQ頭像彈出效果的方法

    這篇文章主要介紹了javascript簡單實現(xiàn)類似QQ頭像彈出效果的方法,可實現(xiàn)簡單的頁面元素彈出效果,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • 使用 JavaScript如何獲取當(dāng)月的第一天和最后一天

    使用 JavaScript如何獲取當(dāng)月的第一天和最后一天

    這篇文章主要介紹了使用 JavaScript如何獲取當(dāng)月的第一天和最后一天,通過本文學(xué)習(xí)了如何使用 JavaScript 中的Date.getFullYear()和?Date.getMonth()方法獲得某個特定月份的第一天和最后一天,需要的朋友可以參考下
    2023-05-05
  • 關(guān)于對async?await效率問題的深入思考

    關(guān)于對async?await效率問題的深入思考

    這篇文章主要給大家介紹了關(guān)于對async?await效率問題的深入思考,async和await要搭配Promise使用,它進一步極大的改進了Promise的寫法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • JS的時間格式化和時間戳轉(zhuǎn)換函數(shù)示例詳解

    JS的時間格式化和時間戳轉(zhuǎn)換函數(shù)示例詳解

    這篇文章主要介紹了JS的時間格式化和時間戳轉(zhuǎn)換函數(shù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • javascript實現(xiàn)信息增刪改查的方法

    javascript實現(xiàn)信息增刪改查的方法

    這篇文章主要介紹了javascript實現(xiàn)信息增刪改查的方法,實例分析了javascript操作頁面元素實現(xiàn)針對頁面信息的增刪改查功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 詳解webpack import()動態(tài)加載模塊踩坑

    詳解webpack import()動態(tài)加載模塊踩坑

    這篇文章主要介紹了詳解webpack import()動態(tài)加載模塊踩坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 詳解微信小程序開發(fā)之城市選擇器 城市切換

    詳解微信小程序開發(fā)之城市選擇器 城市切換

    這篇文章主要介紹了詳解微信小程序開發(fā)之城市選擇器 城市切換,非常具有實用價值,需要的朋友可以參考下。
    2017-01-01
  • 原生JS改變透明度實現(xiàn)輪播效果

    原生JS改變透明度實現(xiàn)輪播效果

    這篇文章主要為大家詳細介紹了原生JS實現(xiàn)的輪播效果,通過改變圖片的透明度來實現(xiàn)輪播的效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 你不知道的 TypeScript 高級類型(小結(jié))

    你不知道的 TypeScript 高級類型(小結(jié))

    這篇文章主要介紹了你不知道的 TypeScript 高級類型(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 實用框架(iframe)操作代碼

    實用框架(iframe)操作代碼

    這篇文章主要介紹了實用框架(iframe)操作代碼 ,需要的朋友可以參考下
    2014-10-10

最新評論