2.3事件綁定中的addEventListener()方法

addEventListener()是標(biāo)準(zhǔn)的綁定事件監(jiān)聽函數(shù)的方法,是W3C所支持的,Chrome、FireFox、Opera、Safari、IE9.0及其以上版本都支持該函數(shù);但是,IE8.0及其以下版本不支持該方法,所以,這種綁定事件的方法必須要處理瀏覽器兼容問題。

語法

對象.addEventListener(事件名稱,事件處理函數(shù),布爾值)

參數(shù)

  • 事件名稱

是一個字符串,需要加引號

  • 事件處理函數(shù)(事件句柄函數(shù))

既可以是命名函數(shù),也可以是匿名函數(shù)

  • 布爾值
  • true 事件處理函數(shù)是在事件的捕獲階段發(fā)生的
  • false 事件處理函數(shù)是在事件的冒泡階段發(fā)生的(默認(rèn)值,如果不寫默認(rèn)為false)

特性

  • 可以通過第三個參數(shù)-布爾值來對事件處理函數(shù)調(diào)用的時機(jī)進(jìn)行操控
  • 既可以調(diào)用命名函數(shù),也可以調(diào)用匿名函數(shù)(最好為命名函數(shù))
btn.addEventListener('click',function(){
    console.log(1);
},false);
btn.addEventListener('click',fn1,false);    //調(diào)用時直接寫函數(shù)名稱即可
function fn1(){
    console.log(1);
};
  • 可以給元素添加多個事件,且不會互相覆蓋
btn.addEventListener('click',function(){
    console.log(1);
},false);
btn.addEventListener('click',function(){
    console.log(2);
},false);
//這段代碼最后會在控制臺同時輸出1和2
  • this指向當(dāng)前元素
<body>
    <input type="button">
</body>
btn.addEventListener('click',function(){
    console.log(this);      //<input type="button">
},false);

移除方法

對象.removeEventListener(事件名稱,事件處理函數(shù),布爾值)

  • 直接移除
btn.addEventListener('click',fn1,false);
function fn1(){
    console.log(1);    //事件綁定被移除,無論怎么點擊按鈕都無法在控制臺輸出內(nèi)容
};
btn.removeEventListener('click',fn1,false);
  • 執(zhí)行一次后移除
btn.addEventListener('click',fn1,false);
function fn1(){
    console.log(1);    //事件執(zhí)行一次后被移除,只會輸出一次1
btn.removeEventListener('click',fn1,false);
};

注意:

  1. 該方法無法移除匿名函數(shù)的事件綁定
    故在使用該方法時事件處理函數(shù)最好為命名函數(shù)
btn.addEventListener('click',function(){
    console.log(1);    //這里重復(fù)點擊還是會在控制臺輸出1
},false);
btn.removeEventListener('click',function(){
    console.log(1);
},false);
  1. 該方法移除時,所有參數(shù)必須相同
btn.addEventListener('click',fn1,false);
function fn1(){
    console.log(1);
};
btn.removeEventListener('click',fn1,true);    //由于這里移除時第三個參數(shù)為true,與上面不同,點擊后還是會輸出1

阻止事件冒泡

采用事件對象.stopPropagation()方法

btn.addEventListener('click',fn1,false);
function fn1(ev){
    ev.stopPropagation();
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 事件綁定的方式 給 DOM 元素綁定事件分為兩大類:在 html 中直接綁定 和 在 JavaScript 中綁定...
    Bruce_zhuan閱讀 1,133評論 0 6
  • 什么是事件: 我們可以簡單的把事件理解為瀏覽器的感知系統(tǒng)。比如說:他可以感覺到用戶是否點擊(click)了頁面、鼠...
    張松1366閱讀 7,005評論 1 6
  • DOM DOM內(nèi)容主要分為四部分: 什么是DOM和節(jié)點; 獲取節(jié)點; 節(jié)點操作(3種); 屬性操作(3種)。 什么...
    magic_pill閱讀 905評論 0 1
  • DOM0級和DOM2級在事件監(jiān)聽使用方式上有什么區(qū)別? DOM0級事件監(jiān)聽:用JavaScript指定事件處理程序...
    LeeoZz閱讀 435評論 0 1
  • dom對象的innerText和innerHTML有什么區(qū)別? innerHTML指的是從對象的起始位置到終止位置...
    coolheadedY閱讀 579評論 0 0

友情鏈接更多精彩內(nèi)容