详解addEventListener的三个参数之useCapture
addEventListener有三个参数:第一个参数表示事件名称(不含on,如"click");第二个参数表示要接收事件处理的函数;第三个参数为useCapture,本文就讲解它。
<divid="outDiv"> <divid="middleDiv"> <divid="inDiv">请在此点击鼠标。</div> </div> </div> <divid="info"></div>
varoutDiv=document.getElementById("outDiv"); varmiddleDiv=document.getElementById("middleDiv"); varinDiv=document.getElementById("inDiv"); varinfo=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;
•全为true时,触发顺序为:outDiv、middleDiv、inDiv;
•outDiv为true,其他为false时,触发顺序为:outDiv、inDiv、middleDiv;
•middleDiv为true,其他为false时,触发顺序为:middleDiv、inDiv、outDiv;
•……
最终得出如下结论:
•true的触发顺序总是在false之前;
•如果多个均为true,则外层的触发先于内层;
•如果多个均为false,则内层的触发先于外层。
以上就是本文的全部内容了,希望大家能够喜欢。