2019-08-26

事件監(jiān)聽和事件委托

現(xiàn)象:什么是事件冒泡或事件捕獲苔可?事件傳遞有兩種方式:冒泡與捕獲
事件傳遞定義了元素事件觸發(fā)的順序缴挖。如果將<p>元素插入到<div>元素中,用戶點(diǎn)擊<p>元素焚辅,哪個(gè)元素的“click”事件先被觸發(fā)呢醇疼?

在冒泡中硕并,內(nèi)部元素的事件會(huì)先被觸發(fā),然后再觸發(fā)外部元素秧荆,即:<p>元素的點(diǎn)擊事件先觸發(fā)倔毙,然后會(huì)觸發(fā)<div>

在捕獲中,外部元素會(huì)先被觸發(fā)乙濒,然后才會(huì)觸發(fā)內(nèi)部元素的事件陕赃,即:<div>元素的點(diǎn)擊事件先觸發(fā),然后再觸發(fā)<p>

事件監(jiān)聽

事件監(jiān)聽:addEventListener()
監(jiān)聽式綁定事件(DOM2):在賦值綁定中(DOM0級(jí))給同一個(gè)事件源綁定多個(gè)相同事件時(shí)颁股,后綁定會(huì)把前書寫覆蓋么库,而采用監(jiān)聽式綁定每個(gè)事件都會(huì)被觸發(fā)。

封裝:注意刪除時(shí)一定是刪除事件處理函數(shù)的名字

//設(shè)置事件
        function addEvent(ele,type,callback){
            if(ele.addEventListener){
                ele.addEventListener(type,callback,false);
            }else if(ele.attachEvent){
                ele.attachEvent('on'+type,callback);
            }

        }
        //取消事件
        function removeEvent(ele,type,callback){
            if(ele.removeEventListener){
                ele.removeEventListener(type,callback,false);
            }
            else{
                ele.detachEvent('on'+type,callback);
            }
        }

事件委托

一:事件的委托:把原本要加給多個(gè)子元素的相同事件甘有,我們直接把這個(gè)事件加給他們共同的父元素诉儒。利用事件的冒泡原理,配合事件源找到真正的觸發(fā)的子元素亏掀。

二:事件委托的好處:

1.節(jié)省了性能(只給他的父元素加事件減少DOM的操作)

2.可以給頁面上暫時(shí)不存在的元素加事件

三: 事件監(jiān)聽的實(shí)現(xiàn):

1.event對(duì)象提供的target屬性忱反,可以返回真正的目標(biāo)節(jié)點(diǎn)也就是觸發(fā)的事件源
2.target的兼容寫法:
var target = ev.target || ev.srcElement // 兼容IE
3.this和target:在事件監(jiān)聽中一般不會(huì)使用this,this在事件監(jiān)聽中指的事件源而不是真正的所點(diǎn)擊的觸發(fā)事件源的節(jié)點(diǎn)滤愕,target屬性可以返回真正的目標(biāo)節(jié)點(diǎn)也就是觸發(fā)的事件源
實(shí)例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #box{width: 100px;height: 100px;background:#f00;}

    </style>
    <style>
        ul li{width: 200px;height: 50px;background: #ccc;margin-top:10px;}


    </style>
</head>
<body>
    <ul class="box">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
    <script>
        var ulobj=document.querySelector('.box');
        ulobj.onclick=function(){
            var e=event||window.event;
            var target=e.target||e.srcElement;
            if(target.nodeName=='LI'){
                console.log(target);
            }
        }

    </script>
</body>
</html>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末温算,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子间影,更是在濱河造成了極大的恐慌注竿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魂贬,死亡現(xiàn)場離奇詭異巩割,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)付燥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宣谈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人机蔗,你說我怎么就攤上這事蒲祈。” “怎么了萝嘁?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵梆掸,是天一觀的道長。 經(jīng)常有香客問我牙言,道長酸钦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任咱枉,我火速辦了婚禮卑硫,結(jié)果婚禮上徒恋,老公的妹妹穿的比我還像新娘。我一直安慰自己欢伏,他們只是感情好入挣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著硝拧,像睡著了一般径筏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上障陶,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天滋恬,我揣著相機(jī)與錄音,去河邊找鬼抱究。 笑死恢氯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鼓寺。 我是一名探鬼主播勋拟,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼侄刽!你這毒婦竟也來了指黎?” 一聲冷哼從身側(cè)響起朋凉,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤州丹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后杂彭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墓毒,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年亲怠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了所计。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡团秽,死狀恐怖主胧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情习勤,我是刑警寧澤踪栋,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站图毕,受9級(jí)特大地震影響夷都,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜予颤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一囤官、第九天 我趴在偏房一處隱蔽的房頂上張望冬阳。 院中可真熱鬧,春花似錦党饮、人聲如沸肝陪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽见坑。三九已至,卻和暖如春捏检,著一層夾襖步出監(jiān)牢的瞬間荞驴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工贯城, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熊楼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓能犯,卻偏偏與公主長得像鲫骗,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子踩晶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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

  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點(diǎn)的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點(diǎn)是DOM的常...
    凜0_0閱讀 1,342評(píng)論 0 8
  • 事件流分為兩種执泰,捕獲事件流和冒泡時(shí)間流 捕獲事件流:從根節(jié)點(diǎn)出發(fā)開始執(zhí)行,一直往子節(jié)點(diǎn)查找執(zhí)行渡蜻,直到查到到根節(jié)點(diǎn)术吝。...
    路上靈魂的自由者閱讀 393評(píng)論 0 0
  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的排苍。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,493評(píng)論 1 11
  • js之事件機(jī)制 1学密、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驅(qū)動(dòng)...
    道無虛閱讀 2,362評(píng)論 1 3
  • [TOC] Prometheus 查詢語言 PromQL(Prometheus Query Language)是 ...
    小孩真笨閱讀 69,006評(píng)論 2 27