国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

js事件機(jī)制----捕獲與冒泡機(jī)制實(shí)例分析

瀏覽:95日期:2024-05-07 17:47:21

本文實(shí)例講述了js事件機(jī)制----捕獲與冒泡機(jī)制。分享給大家供大家參考,具體如下:

先從事件綁定機(jī)制說(shuō)起, 事件綁定機(jī)制通過(guò)綁定方法addEventListener()實(shí)現(xiàn),

語(yǔ)法格式如下:

element.addEventListener(event, function, useCapture)

參數(shù)值

參數(shù) 描述 event 必須。字符串,指定事件名。 注意: 不要使用 'on' 前綴。 例如,使用 'click' ,而不是使用 'onclick'。 提示: 所有 HTML DOM 事件,可以查看我們完整的 HTML DOM Event 對(duì)象參考手冊(cè)。 function 必須。指定要事件觸發(fā)時(shí)執(zhí)行的函數(shù)。 當(dāng)事件對(duì)象會(huì)作為第一個(gè)參數(shù)傳入函數(shù)。 事件對(duì)象的類型取決于特定的事件。例如, 'click' 事件屬于 MouseEvent(鼠標(biāo)事件) 對(duì)象。 useCapture 可選。布爾值,指定事件是否在捕獲或冒泡階段執(zhí)行。 可能值: true - 事件句柄在捕獲階段執(zhí)行false- false- 默認(rèn)。事件句柄在冒泡階段執(zhí)行

我們可以看到第三個(gè)參數(shù)是布爾值, true表示在捕獲階段執(zhí)行, 而false指在冒泡階段執(zhí)行

所以什么是 捕獲和冒泡?

捕獲(capture)和冒泡(bubble)是事件傳播過(guò)程中的兩個(gè)概念, 比如用戶單擊某個(gè)元素, 但由于元素處于父元素內(nèi), 該父元素又處于document對(duì)象中, document對(duì)象又處于window對(duì)象中, 因此該單擊事件實(shí)際發(fā)生在該元素, 父元素, document, window對(duì)象上, 而事件傳播過(guò)程就是瀏覽器決定依次觸發(fā)哪個(gè)對(duì)象的事件處理函數(shù)的過(guò)程.

DOM事件模型將事件傳播過(guò)程分為兩個(gè)階段: 捕獲階段和冒泡階段

在事件捕獲階段, 事件從最頂級(jí)的父元素逐層向內(nèi)傳遞,

在冒泡階段, 事件從事件發(fā)生的直接元素 , 逐層向父元素傳遞

js事件機(jī)制----捕獲與冒泡機(jī)制實(shí)例分析

這里舉個(gè)簡(jiǎn)單的例子:

點(diǎn)擊孫子元素, 給body中的元素都添加點(diǎn)擊事件并輸出觸發(fā)事件的對(duì)象id:

<!DOCTYPE html><html><head></head><body> <div id='父級(jí)'> <div id='兒子'> <div style='width:100px; height:100px; background-color:yellow'> </div> </div> </div></body><script type='text/javascript'> var a = document.getElementById(’父級(jí)’), b = document.getElementById(’兒子’), c = document.getElementById(’孫子’); a.addEventListener('click',show, true); b.addEventListener('click',show, true); c.addEventListener('click',show, true); console.log('前3為捕獲,后三個(gè)為冒泡'); a.addEventListener('click',show, false); b.addEventListener('click',show, false); c.addEventListener('click',show, false); function show(even){ console.log(this.id); }</script></html>

js事件機(jī)制----捕獲與冒泡機(jī)制實(shí)例分析

其中兩條孫子輸出相同被折疊了, 可以看到前三個(gè)是以捕獲順序, 第三個(gè)參數(shù)為true, 順序是從父親到孫子

后三個(gè)為false意思是冒泡順序, 順序是孫子到父級(jí),即從內(nèi)到外

實(shí)際上捕獲和冒泡時(shí)最外層和的元素并不是父級(jí)div,

捕獲時(shí)實(shí)際上是:

document-->html-->body-->父級(jí)div-->兒子div-->孫子div

冒泡時(shí)相反, 只不過(guò)body及以上沒(méi)添加事件并輸出, 所以在例子中沒(méi)顯現(xiàn)出來(lái)

所以用冒泡還是捕獲?

對(duì)于事件代理來(lái)說(shuō),在事件捕獲或者事件冒泡階段處理并沒(méi)有明顯的優(yōu)劣之分,但是由于事件冒泡的事件流模型被所有主流的瀏覽器兼容,從兼容性角度來(lái)說(shuō)還是建議大家使用事件冒泡模型。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁(yè)面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 久久午夜精品 | 国内精品七七久久影院 | 老师张开腿让我爽了一夜视频 | 一级片 720p 一级片 mp4 一级片a | 欧美成人高清在线视频大全 | 国产毛片久久久久久国产毛片 | 精品a视频 | av国产精品 | 国产一级做a爱免费观看 | 亚洲自拍在线观看 | 精品在线观看一区 | 日本韩国三级在线观看 | 手机在线看片国产日韩生活片 | 久草在线视频免费资源观看 | 中国日本高清免费视频网 | 天堂av影院 | 日本免费一区二区三区a区 日本免费一区二区三区看片 | 亚洲成人免费观看 | 九九香蕉网 | 亚洲欧美日韩国产一区二区精品 | 亚洲欧美性视频 | 性色tv | 韩国黄色一级毛片 | 欧美性色黄大片www 欧美性色黄大片一级毛片视频 | 成年女人看片免费视频频 | 综合自拍| 日韩国产成人资源精品视频 | 成人一级黄色片 | 香港全黄一级毛片在线播放 | 精品一区二区三区亚洲 | 91久久精品 | 欧美一级特黄特色大片免费 | 国产成人国产在线观看入口 | 永久精品免费影院在线观看网站 | 精品欧美一区二区三区四区 | 黄网站免费在线 | 欧美日韩精彩视频 | 加勒比综合网 | 欧美在线播放成人免费 | 久久香蕉国产线看观看式 | 韩国主播19福利视频在线 |