事件委托與冒泡闹炉、事件捕獲

事件委托:利用冒泡的原理蒿赢,把事件加到父級(jí)上,觸發(fā)執(zhí)行效果渣触。

例子:

<ul id="ull">
    <li>1</li>
    <li>1</li>
    <li>1</li>
    <li>1</li>
    <li>1</li>
    <li>1</li>
    <li>1</li>
</ul>
//一般寫法
    var li=document.getElementsByTagName("li");
    for(var i=0;i<li.length;i++){
        li[i].onclick=function () {
            console.log("1")
        }
    }
//缺點(diǎn):綁定多個(gè)事件羡棵,并且如果后續(xù)有新添加的節(jié)點(diǎn)li,需要重新綁定onclick事件

//事件代理
    var ull=document.getElementById("ull");
    ull.addEventListener("click",function (e) {
        var target=e.target;
        if(target.nodeName.toUpperCase()=="LI") {
            console.log("1")
            stopPropagation(e)//阻止繼續(xù)向上冒泡
        }
    });

事件冒泡:事件從事件目標(biāo)(target)開(kāi)始嗅钻,往上冒泡直到頁(yè)面的最上一級(jí)標(biāo)簽皂冰。(target-body-html-document)

<div id="div2">
    <ul id="ull">
        <li>1</li>
        <li>1</li>
        <li>1</li>
        <li>1</li>
        <li>1</li>
        <li>1</li>
        <li>1</li>
    </ul>
</div>

假設(shè)給div和li都綁定了click事件,那么當(dāng)點(diǎn)擊li時(shí)啊犬,會(huì)先后(從內(nèi)到外)觸發(fā)這兩個(gè)click事件灼擂,如果不想要這樣的結(jié)果,那么就需要阻止冒泡

//阻止事件冒泡
    function stopPropagation(e) {
        if (e.stopPropagation) {
            e.stopPropagation();//Firefox
        } else {
            e.cancelBubble = true;//IE
        }
    }

事件捕獲:與事件冒泡的順序相反(IE沒(méi)有事件捕獲)

W3C模型

W3C模型是將兩者進(jìn)行中和觉至,在W3C模型中剔应,任何事件發(fā)生時(shí),先從頂層開(kāi)始進(jìn)行事件捕獲,直到事件觸發(fā)到達(dá)了事件源元素峻贮。然后席怪,再?gòu)氖录赐线M(jìn)行事件冒泡,直到到達(dá)document纤控。
一般的綁定事件方式挂捻,如:onclick,采用的是冒泡方式船万。
但我們可以選擇事件處理函數(shù)在哪一個(gè)階段被調(diào)用刻撒。
addEventListener有三個(gè)參數(shù):

element.addEventListener(event, function, useCapture)
//第三個(gè)參數(shù)默認(rèn)值是false,表示在事件冒泡的階段調(diào)用事件處理函數(shù)耿导,如果參數(shù)為true声怔,則表示在事件捕獲階段調(diào)用處理函數(shù)
<div  id="div1" style="width: 500px;background-color: yellow">
    <div id="div2" style="width: 50%;background-color: aqua;margin: 0 auto">
        <ul id="ull" style="width: 50%;background-color: coral;margin: 0 auto">
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
            <li>1</li>
        </ul>
    </div>
</div>
//事件捕獲
    var div1=document.getElementById("div1");
    var div2=document.getElementById("div2");
    var ull=document.getElementById("ull");
    div2.addEventListener("click",function () {
        console.log('div2')
    },true);    //捕獲時(shí)執(zhí)行
    div1.addEventListener("click",function () {
        console.log('div1')
    });//
    ull.addEventListener("click",function () {
        console.log('ull')
    });
    
    //點(diǎn)擊ul,依次打印出div2舱呻,ull醋火,div1

參考:
https://segmentfault.com/a/1190000000749838
http://www.jb51.net/article/42492.htm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市箱吕,隨后出現(xiàn)的幾起案子芥驳,更是在濱河造成了極大的恐慌,老刑警劉巖茬高,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兆旬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡怎栽,警方通過(guò)查閱死者的電腦和手機(jī)爵憎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)婚瓜,“玉大人,你說(shuō)我怎么就攤上這事刑棵“涂蹋” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵蛉签,是天一觀的道長(zhǎng)胡陪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)碍舍,這世上最難降的妖魔是什么柠座? 我笑而不...
    開(kāi)封第一講書人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮片橡,結(jié)果婚禮上妈经,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好吹泡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布骤星。 她就那樣靜靜地躺著,像睡著了一般爆哑。 火紅的嫁衣襯著肌膚如雪洞难。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,906評(píng)論 1 290
  • 那天揭朝,我揣著相機(jī)與錄音队贱,去河邊找鬼。 笑死潭袱,一個(gè)胖子當(dāng)著我的面吹牛柱嫌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敌卓,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼慎式,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了趟径?” 一聲冷哼從身側(cè)響起瘪吏,我...
    開(kāi)封第一講書人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜗巧,沒(méi)想到半個(gè)月后掌眠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幕屹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蓝丙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片望拖。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渺尘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出说敏,到底是詐尸還是另有隱情鸥跟,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布盔沫,位于F島的核電站医咨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏架诞。R本人自食惡果不足惜拟淮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谴忧。 院中可真熱鬧很泊,春花似錦角虫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至争涌,卻和暖如春粉楚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亮垫。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工模软, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饮潦。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓燃异,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親继蜡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子回俐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

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

  • 背景知識(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
  • (1)冒泡型事件:事件按照從最特定的事件目標(biāo)到最不特定的事件目標(biāo)(document對(duì)象)的順序觸發(fā)忘瓦。 (2)捕獲型...
    逍遙g閱讀 433評(píng)論 2 0
  • 傳統(tǒng)的綁定方式 element.onclick = function(e){// ...}; 傳統(tǒng)綁定的優(yōu)點(diǎn)非常簡(jiǎn)...
    小飛俠zzr閱讀 261評(píng)論 0 0
  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點(diǎn)的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點(diǎn)是DOM的常...
    凜0_0閱讀 1,324評(píng)論 0 8
  • 夜晚一陣風(fēng)耕皮,裹挾著一片枯黃地樹葉 帶著沙粒般地質(zhì)感劃過(guò)有塵土地大地 夜,黑漆漆 沉重而美麗 那沉重又美麗地夜晚 如...
    文藝飯團(tuán)閱讀 223評(píng)論 0 0