addEventListener 的三個參數

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,則內層的觸發先於外層。

相關文章
相關標籤/搜索