色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 捕獲模型

Javascript 事件模型分為三種,分別是捕獲模型,目標(biāo)模型以及冒泡模型。捕獲模型意思是事件從最上層節(jié)點(diǎn)開始,逐層向下傳遞直到觸發(fā)事件所在的節(jié)點(diǎn)。下面讓我們看幾個(gè)具體的例子來更好地理解捕獲模型。

// HTML代碼
<div id="outer">
<div id="middle">
<div id="inner"></div>
</div>
</div>
// Javascript代碼
var outer = document.getElementById('outer');
outer.addEventListener('click', function() {
console.log('outer clicked');
}, true); // 捕獲模型
var middle = document.getElementById('middle');
middle.addEventListener('click', function() {
console.log('middle clicked');
}, true);
var inner = document.getElementById('inner');
inner.addEventListener('click', function() {
console.log('inner clicked');
}, true);

在上面的代碼中,我們?cè)谌齻€(gè) div 元素上都添加了 click 事件,并且都使用捕獲模型。現(xiàn)在我們點(diǎn)擊 inner 元素,控制臺(tái)會(huì)先輸出 outer clicked, 然后輸出 middle clicked,最后才輸出 inner clicked。這就證明了事件是從最上層元素開始捕獲,直到最底層元素然后再進(jìn)行冒泡。

另外,由于現(xiàn)代瀏覽器性能已經(jīng)非常強(qiáng)大,冒泡模型已經(jīng)成為了默認(rèn)的事件模型,因此在實(shí)際開發(fā)中并不常使用捕獲模型。但如果確實(shí)需要使用到捕獲模型,可以將最后一個(gè)參數(shù)設(shè)置為 true。

// HTML代碼
<div id="outer">
<div id="middle">
<div id="inner"></div>
</div>
</div>
// Javascript代碼
var outer = document.getElementById('outer');
outer.addEventListener('click', function() {
console.log('outer clicked');
});
var middle = document.getElementById('middle');
middle.addEventListener('click', function() {
console.log('middle clicked');
});
var inner = document.getElementById('inner');
inner.addEventListener('click', function() {
console.log('inner clicked');
}, true); // 捕獲模型

在上面的代碼中,我們只將最底層的 inner 元素的事件處理函數(shù)設(shè)置為捕獲模型,其他的元素的事件處理函數(shù)均為默認(rèn)的冒泡模型。現(xiàn)在我們點(diǎn)擊 inner 元素,控制臺(tái)會(huì)先輸出 inner clicked,然后再輸出 middle clicked,最后再輸出 outer clicked。這說明 inner 元素的事件處理函數(shù)先于其他元素的事件處理函數(shù)被觸發(fā)。

總之,捕獲模型是 Javascript 事件模型的一種,事件從最上層節(jié)點(diǎn)開始進(jìn)行捕獲,直到觸發(fā)事件所在的節(jié)點(diǎn)。在實(shí)際開發(fā)中,由于現(xiàn)代瀏覽器性能已經(jīng)非常強(qiáng)大,冒泡模型已經(jīng)成為了默認(rèn)的事件模型,因此在一般情況下是不需要使用捕獲模型的。但如果確實(shí)需要使用到捕獲模型,可以通過將事件處理函數(shù)的最后一個(gè)參數(shù)設(shè)置為 true 來啟用捕獲模型。