亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2016年05月28日 11:28:21   投稿:jingxian  
下面小編就為大家?guī)硪黄钊肜斫馐录芭?Bubble)和事件捕捉(capture)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

事件的發(fā)生順序

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

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

兩種模型

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

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

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

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

w3c

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

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

element.addEventListener(event, function, useCapture)

阻止冒泡

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

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

window.event.cancelBubble = true

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

e.stopPropagation()

通過調(diào)用這些方法會阻止所有冒泡向外傳播。跨瀏覽器解決方案:

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

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

相關(guān)文章

最新評論