addEventListener 有三個參數:第一個參數表示事件名稱(不含 on,如 "click");第二個參數表示要接收事件處理的函數;第三個參數爲 useCapture,本文就講解它。函數
<div id="outDiv"> <div id="middleDiv"> <div id="inDiv">請在此點擊鼠標。</div> </div> </div> <div id="info"></div> var outDiv = document.getElementById("outDiv"); var middleDiv = document.getElementById("middleDiv"); var inDiv = document.getElementById("inDiv"); var info = document.getElementById("info"); outDiv.addEventListener("click", function () { info.innerHTML += "outDiv" + "<br>"; }, false); middleDiv.addEventListener("click", function () { info.innerHTML += "middleDiv" + "<br>"; }, false); inDiv.addEventListener("click", function () { info.innerHTML += "inDiv" + "<br>"; }, false);
上述是咱們測試的代碼,根據 info 的顯示來肯定觸發的順序,有三個 addEventListener,而 useCapture 可選值爲 true 和 false,因此 2*2*2,能夠得出 8 段不一樣的程序。測試
全爲 false 時,觸發順序爲:inDiv、middleDiv、outDiv;spa
全爲 true 時,觸發順序爲:outDiv、middleDiv、inDiv;code
outDiv 爲 true,其餘爲 false 時,觸發順序爲:outDiv、inDiv、middleDiv;orm
middleDiv 爲 true,其餘爲 false 時,觸發順序爲:middleDiv、inDiv、outDiv;事件
……get
最終得出以下結論:it
true 的觸發順序老是在 false 以前;io
若是多個均爲 true,則外層的觸發先於內層;function
若是多個均爲 false,則內層的觸發先於外層。