3 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
可以在兩種情況下激活事件:在開始(“捕獲”)和結(jié)束(“氣泡”)。事件按照其定義的順序執(zhí)行。假設(shè)您定義了4個(gè)事件監(jiān)聽器:
window.addEventListener("click", function(){console.log(1)}, false);
window.addEventListener("click", function(){console.log(2)}, true);
window.addEventListener("click", function(){console.log(3)}, false);
window.addEventListener("click", function(){console.log(4)}, true);
日志消息將按以下順序顯示:
2
(首先使用定義capture=true
)4
(使用定義秒capture=true
)1
(帶有的第一個(gè)定義的事件capture=false
)3
(帶有的第二個(gè)已定義事件capture=false
)

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
捕獲事件(useCapture = true)與冒泡事件(useCapture = false)
MDN參考
捕獲事件將在泡泡事件之前調(diào)度
事件傳播順序?yàn)?/p>
家長(zhǎng)捕捉
兒童捕捉
目標(biāo)捕獲和目標(biāo)泡沫
按照注冊(cè)順序
當(dāng)元素是事件的目標(biāo)時(shí),useCapture參數(shù)無(wú)關(guān)緊要(感謝@bam和@ legend80s)
兒童泡泡
父母泡泡
stopPropagation() 將停止流動(dòng)
使用捕獲流
演示版
結(jié)果:
家長(zhǎng)捕捉
兒童泡泡1
兒童捕捉
(因?yàn)楹⒆邮悄繕?biāo),所以捕獲和氣泡將按照他們注冊(cè)的順序觸發(fā))
兒童泡泡2
父母泡泡
var parent = document.getElementById('parent'),
children = document.getElementById('children');
children.addEventListener('click', function (e) {
alert('Children Bubble 1');
// e.stopPropagation();
}, false);
children.addEventListener('click', function (e) {
alert('Children Capture');
// e.stopPropagation();
}, true);
children.addEventListener('click', function (e) {
alert('Children Bubble 2');
// e.stopPropagation();
}, false);
parent.addEventListener('click', function (e) {
alert('Parent Capture');
// e.stopPropagation();
}, true);
parent.addEventListener('click', function (e) {
alert('Parent Bubble');
// e.stopPropagation();
}, false);
<div id="parent">
<div id="children">
Click
</div>
</div>
添加回答
舉報(bào)