最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解javascript事件冒泡

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

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

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

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

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

以上代碼可以阻止事件冒泡,下面對(duì)代碼做一下簡(jiǎn)單注釋:
二、代碼注釋:

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

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

相關(guān)文章

  • 淺談js數(shù)組和splice的用法

    淺談js數(shù)組和splice的用法

    下面小編就為大家?guī)?lái)一篇淺談js數(shù)組和splice的用法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • JavaScript通過(guò)filereader接口讀取文件

    JavaScript通過(guò)filereader接口讀取文件

    這篇文章主要為大家詳細(xì)介紹了通過(guò)filereader接口讀取文件,使用readAsDataURL方法預(yù)覽圖片的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 基于gulp合并壓縮Seajs模塊的方式說(shuō)明

    基于gulp合并壓縮Seajs模塊的方式說(shuō)明

    本文介紹一個(gè)簡(jiǎn)單可行的辦法,來(lái)做基于gulp構(gòu)建的中小型項(xiàng)目中的seajs合并壓縮,感興趣的朋友一起看看詳情吧
    2016-06-06
  • 分享11個(gè)常用JavaScript小技巧

    分享11個(gè)常用JavaScript小技巧

    在我們的日常開發(fā)過(guò)程中,我們經(jīng)常會(huì)遇到數(shù)字與字符串轉(zhuǎn)換,檢查對(duì)象中是否存在對(duì)應(yīng)值,條件性操作對(duì)象數(shù)據(jù),過(guò)濾數(shù)組中的錯(cuò)誤值,等等這類處理。本文整理出了一些常用的小技巧,希望大家能喜歡
    2022-06-06
  • JS 對(duì)java返回的json格式的數(shù)據(jù)處理方法

    JS 對(duì)java返回的json格式的數(shù)據(jù)處理方法

    下面小編就為大家?guī)?lái)一篇JS 對(duì)java返回的json格式的數(shù)據(jù)處理方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • 給自定義對(duì)象加上自定義事件的支持的教程

    給自定義對(duì)象加上自定義事件的支持的教程

    自從我寫了幾個(gè)還可以拿出手的東東之后,自我感覺(jué)牛B了許多,還有不少同志圍著我,稱我為高手,虛容心大大的得到了滿足。這些是后話,暫且不表。。。
    2008-03-03
  • 通過(guò)js給網(wǎng)頁(yè)加上水印背景實(shí)例

    通過(guò)js給網(wǎng)頁(yè)加上水印背景實(shí)例

    這篇文章主要介紹了通過(guò)js給網(wǎng)頁(yè)加上水印背景實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • js 冒泡事件與事件監(jiān)聽(tīng)使用分析

    js 冒泡事件與事件監(jiān)聽(tīng)使用分析

    js 冒泡事件與事件監(jiān)聽(tīng) 代碼分析
    2009-09-09
  • JavaScript實(shí)現(xiàn)點(diǎn)擊自動(dòng)選擇TextArea文本的方法

    JavaScript實(shí)現(xiàn)點(diǎn)擊自動(dòng)選擇TextArea文本的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)點(diǎn)擊自動(dòng)選擇TextArea文本的方法,涉及javascript中focus()、select()方法的使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • 小程序模實(shí)現(xiàn)糊搜索功能

    小程序模實(shí)現(xiàn)糊搜索功能

    這篇文章主要為大家詳細(xì)介紹了小程序模實(shí)現(xiàn)糊搜索功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評(píng)論

永吉县| 濉溪县| 晋中市| 鹤庆县| 深州市| 株洲市| 东阳市| 峨眉山市| 扎鲁特旗| 闸北区| 丰城市| 江川县| 梅河口市| 大庆市| 高平市| 广州市| 滨海县| 商都县| 西贡区| 吐鲁番市| 平山县| 丰宁| 定边县| 凤冈县| 太康县| 静海县| 措勤县| 栾川县| 陈巴尔虎旗| 仲巴县| 台安县| 晴隆县| 乌拉特前旗| 离岛区| 静乐县| 仁布县| 扎鲁特旗| 宁明县| 淮南市| 连州市| 兴仁县|