JS的捕獲、綁定和冒泡

JS的addEventListener方法

  • addEventListener方法是將監(jiān)聽(tīng)器綁定到某個(gè)Document元素上失都,當(dāng)觸發(fā)指定事件時(shí)柏蘑,執(zhí)行指定的回調(diào)函數(shù),只要當(dāng)前Document未被銷毀掉粹庞,該事件就會(huì)被調(diào)用咳焚,如:
<div class="list-bottom load-more">加載更多</div>

document.querySelector('.load-more').addEventListener('click', function(e) {
    console.log('加載更多');
}
// 此時(shí)點(diǎn)擊div會(huì)觸發(fā)點(diǎn)擊事件

// 當(dāng)div去掉“l(fā)oad-more”時(shí)
<div class="list-bottom">加載更多</div>

// 此時(shí)點(diǎn)擊div仍然會(huì)觸發(fā)點(diǎn)擊事件庞溜,可以通過(guò)判斷某個(gè)class是否存在來(lái)阻止事件繼續(xù)執(zhí)行革半,即觸發(fā)該事件但并不執(zhí)行操作
 document.querySelector('.load-more').addEventListener('click', function(e) {
     if (! this.classList.contains("load-more")) return;
     console.log('加載更多');
}
  • addEventListener的參數(shù):dom.addEventListener(type, listener, useCapture );
    type:事件觸發(fā)的類型;
    listener:當(dāng)監(jiān)聽(tīng)的事件被觸發(fā)后所執(zhí)行的操作;
    useCapture :可選參數(shù),Boolean類型,默認(rèn)為false.在一個(gè)DOM樹(shù)中,最外面的根元素注冊(cè)了listener,當(dāng)DOM樹(shù)中的某一子元素觸發(fā)該事件時(shí),是否會(huì)觸發(fā)其父節(jié)點(diǎn)綁定的事件.

捕獲流码、綁定和冒泡

捕獲:多層DOM樹(shù),鼠標(biāo)觸發(fā)DOM事件時(shí),瀏覽器會(huì)從根節(jié)點(diǎn)開(kāi)始向內(nèi)進(jìn)行事件傳播,如果父元素綁定了相同事件則會(huì)先觸發(fā)父元素事件.

<html>
    <body>
        <div id="d1">parent
            <div id="d2">child</div>
        </div>
    </body>
    <script>
        document.body.addEventListener('click', function(e) {
            console.log('body-cap');
        }, true);
        document.querySelector('#d1').addEventListener('click', function(e) {
            console.log('parent-cap');
        }, true);
        document.querySelector('#d2').addEventListener('click', function(e) {
            console.log('child-cap');
        }, true);
    </script>
</html>
// 輸出結(jié)果
body-cap
parent-cap
child-cap

冒泡:與傳播恰好相反,由觸發(fā)事件節(jié)點(diǎn)向根節(jié)點(diǎn)傳播事件.

    <body>
        <div id="d1">parent
            <div id="d2">child</div>
        </div>
    </body>
    <script>
        document.body.addEventListener('click', function(e) {
            console.log('body');
        });
        document.querySelector('#d1').addEventListener('click', function(e) {
            console.log('parent');
        });
        document.querySelector('#d2').addEventListener('click', function(e) {
            console.log('child');
        });
    </script>
</html>
// 輸出結(jié)果
child
parent
body
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末又官,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子漫试,更是在濱河造成了極大的恐慌六敬,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驾荣,死亡現(xiàn)場(chǎng)離奇詭異外构,居然都是意外死亡普泡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門典勇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)劫哼,“玉大人,你說(shuō)我怎么就攤上這事割笙∪ㄉ眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵伤溉,是天一觀的道長(zhǎng)般码。 經(jīng)常有香客問(wèn)我,道長(zhǎng)乱顾,這世上最難降的妖魔是什么板祝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮走净,結(jié)果婚禮上券时,老公的妹妹穿的比我還像新娘。我一直安慰自己伏伯,他們只是感情好橘洞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著说搅,像睡著了一般炸枣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弄唧,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天适肠,我揣著相機(jī)與錄音,去河邊找鬼候引。 笑死侯养,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的澄干。 我是一名探鬼主播逛揩,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼傻寂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起携兵,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疾掰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后徐紧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體静檬,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炭懊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拂檩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侮腹。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖稻励,靈堂內(nèi)的尸體忽然破棺而出父阻,到底是詐尸還是另有隱情,我是刑警寧澤望抽,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布加矛,位于F島的核電站,受9級(jí)特大地震影響煤篙,放射性物質(zhì)發(fā)生泄漏斟览。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一辑奈、第九天 我趴在偏房一處隱蔽的房頂上張望苛茂。 院中可真熱鬧,春花似錦鸠窗、人聲如沸妓羊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侍瑟。三九已至,卻和暖如春丙猬,著一層夾襖步出監(jiān)牢的瞬間涨颜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工茧球, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庭瑰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓抢埋,卻偏偏與公主長(zhǎng)得像弹灭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子揪垄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Dom事件 事件是一種異步編程的實(shí)現(xiàn)方式穷吮,本質(zhì)上是程序各個(gè)組成部分之間的通信。DOM支持大量的事件 (一) Eve...
    woow_wu7閱讀 1,767評(píng)論 0 1
  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的。 ??事件酷愧,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,474評(píng)論 1 11
  • 事件綁定的方式 給 DOM 元素綁定事件分為兩大類:在 html 中直接綁定 和 在 JavaScript 中綁定...
    Bruce_zhuan閱讀 1,032評(píng)論 0 6
  • js之事件機(jī)制 1驾诈、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驅(qū)動(dòng)...
    道無(wú)虛閱讀 2,338評(píng)論 1 3
  • 背景知識(shí) 什么是事件缠诅?直觀的說(shuō)就是網(wǎng)頁(yè)上發(fā)生的事情,大部分是指用戶的鼠標(biāo)動(dòng)作和鍵盤動(dòng)作乍迄,如點(diǎn)擊管引、移動(dòng)鼠標(biāo)、按下某個(gè)...
    吧啦啦小湯圓閱讀 1,838評(píng)論 2 15