JS事件綁定的常用方式實(shí)例總結(jié)
本文實(shí)例講述了JS事件綁定的常用方式。分享給大家供大家參考,具體如下:
常用的事件綁定的幾種方式有三種:
- 直接在 dom 元素上進(jìn)行綁定。
- 用 on 綁定。
- 用 addEventListener、attachEvent 綁定。
一、直接在 dom 元素上進(jìn)行綁定
<input id="btn1" type="button" onclick="test();" />
二、用 on 綁定
兼容性:在IE,F(xiàn)F,Chrome,Safari,Mozilla,Opera下都適用。
// onclick綁定 document.body.onclick = () => { console.log(111) } // 解綁 document.body.onclick = null;
但是,同一個(gè) dom 元素上,on 只能綁定一個(gè)同類型事件,后者會(huì)覆蓋前者,不同類型的事件可以綁定多個(gè)。
三、用 addEventListener、attachEvent 綁定
同一個(gè) dom 元素上,用 addEventListener、attachEvent 可以綁定多個(gè)同類型事件。
但是,addEventListener 事件執(zhí)行順序按照事件綁定的先后順序執(zhí)行;attachEvent 事件執(zhí)行順序則是隨機(jī)的。
addEventListener
// 綁定 document.body.addEventListener('click', bodyClick, false); // 解綁 document.body.removeEventListener('click', bodyClick, false);
注意:removeEventListener 第二個(gè)參數(shù)要和 addEventListener 指向同一個(gè)函數(shù)才能解綁成功。
addEventListener 的第三個(gè)參數(shù)若為 false,函數(shù)在冒泡階段執(zhí)行;若為 true,函數(shù)在捕獲階段執(zhí)行。默認(rèn)為 false。
<div id="box"> <div id="child"></div> </div>
box.addEventListener("click", function(){ console.log("box"); }, false); child.addEventListener("click", function(){ console.log("child"); }); // 執(zhí)行順序?yàn)?child box
box.addEventListener("click", function(){ console.log("box"); }, true); child.addEventListener("click", function(){ console.log("child"); }); // 執(zhí)行順序?yàn)?box child
兼容性
Chrome 和 FireFox 只支持 addEventListener;IE 只支持 attachEvent(IE11開始不支持了)。
所以必須對(duì)2種方法做兼容處理。原理是先判斷 attachEvent 是否為真,如果為真則用 attachEvent 綁定事件,否則用 addEventListener 綁定事件。
可以封裝一個(gè)函數(shù)做兼容性處理:
//dom綁定事件的元素,ev事件名,fn執(zhí)行函數(shù) function myAddEvent(dom, ev, fn){ if(dom.attachEvent){ dom.attachEvent("on"+ev, fn); }else { dom.addEventListener(ev, fn, false); } } myAddEvent(d1, "click", ()=>{ console.log(1111) });
另外
以上三種方式綁定的點(diǎn)擊事件都可以用下面這條語句觸發(fā)
document.getElementById("btn").click();
PS:關(guān)于javascript事件說明可參考本站javascript事件與功能說明大全:http://tools.jb51.net/table/javascript_event
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁面元素操作技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
Javascript setInterval的兩種調(diào)用方法(實(shí)例講解)
這篇文章主要是對(duì)Javascript setInterval的兩種調(diào)用方法解析了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11combox改進(jìn)版 頁面原型參考dojo的,比網(wǎng)上jQuery的那些combox功能強(qiáng),代碼更小
對(duì)于combox功能實(shí)現(xiàn)的最小化js代碼,頁面原型參考dojo的combox模樣,支持鍵盤動(dòng)作以及自動(dòng)篩選,高亮等2010-04-04前端導(dǎo)出word文件的多種方式以及導(dǎo)出excel文件
導(dǎo)出功能是項(xiàng)目開發(fā)中經(jīng)常會(huì)遇到的需求,在此就前端方面需要做的部分做一個(gè)總結(jié),這篇文章主要給大家介紹了關(guān)于前端導(dǎo)出word文件的多種方式以及導(dǎo)出excel文件的相關(guān)資料,需要的朋友可以參考下2024-08-08JavaScript遞歸操作樹形結(jié)構(gòu)代碼示例
前端樹形結(jié)構(gòu)一般用于網(wǎng)頁的地理位置輸入框,地理位置級(jí)聯(lián)選擇,人員的部門選擇等,這篇文章主要給大家介紹了關(guān)于JavaScript遞歸操作樹形結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2024-01-01JS實(shí)現(xiàn)跟隨鼠標(biāo)立體翻轉(zhuǎn)圖片的方法
這篇文章主要介紹了JS實(shí)現(xiàn)跟隨鼠標(biāo)立體翻轉(zhuǎn)圖片的方法,涉及javascript操作圖片翻轉(zhuǎn)的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05js split函數(shù)用法總結(jié)(從入門到精通)
js split就是將一字符串以特定的字符分割成數(shù)組,數(shù)組一般是字符串處理比較常用的處理方法2013-03-03