一贞岭、什么是事件捕獲和事件冒泡
微軟提出了事件冒泡(event bubbling)的事件流糟把,即事件從最內層的元素開始亩钟,一層層往上傳播乓梨,直到document結束。與之相對應的網(wǎng)景提出了名為事件捕獲(event capturing)的事件流,即事件從最外層的元素開始也就是從document開始一層層往下傳遞清酥。
“DOM2級事件”規(guī)范要求應該從document對象開始傳播扶镀,但是這些瀏覽器都是從window對象開始捕獲事件的。
二焰轻、為什么用事件捕獲和事件冒泡
事件捕獲和事件冒泡的概念的提出是為了解決頁面元素事件發(fā)生的順序問題臭觉。
<div id="div1">
<div id="div2"></div>
</div>
?當div1和div2都綁定click事件的時候,我們需要知道兩個div事件的觸發(fā)的順序,作出相應的處 ?理蝠筑。
三狞膘、怎么用事件捕獲和事件冒泡
1.在javascript中,使用addEventListener()來給元素綁定事件
EventTarget.addEventListener(type,listener,useCapture)
type:需要監(jiān)聽的事件類型
listener:事件觸發(fā)之后執(zhí)行的函數(shù)
useCapture:默認為false什乙,表示使用事件冒泡挽封,即div2先被點擊;設置為true稳强,表示使用事件捕獲场仲,即div1先被點擊。
2.在jquery中退疫,不支持事件捕獲渠缕,僅僅支持事件冒泡
jquery提供了停止事件冒泡的方法:event.stopPropagation();可以阻止事件中其他對象的事件處理函數(shù)被執(zhí)行褒繁。
jquery還提供了阻止默認行為的方法:event.preventDefault()亦鳞;例如:提交表單的時候,對表單進行前端驗證棒坏,驗證不通過的時候燕差,阻止表單提交 ,就可以使用此方法坝冕。