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

深入理解事件冒泡(Bubble)和事件捕捉(capture)

 更新時(shí)間:2016年05月28日 11:28:21   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇深入理解事件冒泡(Bubble)和事件捕捉(capture)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

事件的發(fā)生順序

假設(shè)在一個(gè)元素中又嵌套了另一個(gè)元素并且兩者都有一個(gè)onClick事件處理函數(shù)(event handler)。如果用戶單擊元素2,則元素1和元素2的單擊事件都會(huì)被觸發(fā)。但是哪一個(gè)事件先被觸發(fā)?哪一個(gè)事件處理函數(shù)會(huì)被首先執(zhí)行?換句話說(shuō),事件的發(fā)生順序到底如何?如下圖是當(dāng)點(diǎn)擊span元素區(qū)域是,三個(gè)點(diǎn)擊事件都會(huì)被觸發(fā),但是先后順序是怎樣的呢?

<div onclick="func1">
   <p onclick="func2">
     <span onclick=""func3>
     </span>
   </p>
 </div>

兩種模型

對(duì)于這個(gè)事件的處理順序上,Netscape和微軟有兩種截然不同的處理方法:

•Netscape主張事件會(huì)從最外層開(kāi)始發(fā)生,直到最具體的元素,這種事件發(fā)生順序被稱為捕獲型

•微軟則保持事件從最內(nèi)部元素開(kāi)始發(fā)生,然后一直向上傳播,這種事件順序被稱為冒泡型

這兩種事件順序是截然相反的。Explorer瀏覽器只支持冒泡事件,Mozilla,Opera7和Konqueror兩者都支持。而更古老的opera和iCab兩者都不支持

w3c

任何發(fā)生在w3c事件模型中的事件,首是進(jìn)入捕獲階段,直到達(dá)到目標(biāo)元素,再進(jìn)入冒泡階段。

對(duì)于正常的web開(kāi)發(fā),可以選擇是在捕獲階段還是冒泡階段綁定事件處理函數(shù),這是通過(guò)addEventListener()方法實(shí)現(xiàn)的,如果這個(gè)函數(shù)的useCapture參數(shù)是true,則在捕獲階段綁定函數(shù),反之false,在冒泡階段綁定函數(shù)。

element.addEventListener(event, function, useCapture)

阻止冒泡

在正常的開(kāi)發(fā)過(guò)程中,如果想要阻止事件的傳播,通過(guò)一個(gè)方法實(shí)現(xiàn)。

在微軟的模型中,你必須設(shè)置事件的cancelBubble的屬性為true

window.event.cancelBubble = true

在w3c模型中你必須調(diào)用事件的stopPropagation()方法

e.stopPropagation()

通過(guò)調(diào)用這些方法會(huì)阻止所有冒泡向外傳播??鐬g覽器解決方案:

function doSomething(e) {
  if (!e) {
    var e = window.event;
    e.cancelBubble = true;
  }
  if (e.stopPropagation) {
    e.stopPropagation();
  }
}

以上這篇深入理解事件冒泡(Bubble)和事件捕捉(capture)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

尼玛县| 舞阳县| 桂东县| 封丘县| 孝义市| 福贡县| 绥棱县| 长泰县| 滁州市| 兴业县| 高台县| 苏尼特左旗| 博爱县| 灵台县| 蒲江县| 突泉县| 平山县| 岚皋县| 新龙县| 许昌县| 团风县| 集贤县| 墨脱县| 金堂县| 孟村| 云安县| 来宾市| 教育| 民乐县| 东辽县| 广饶县| 什邡市| 诸暨市| 安仁县| 宁远县| 五河县| 夹江县| 浪卡子县| 壤塘县| 宿迁市| 海宁市|