JS事件處理程序中的this

使用DOM0級方法指定的事件處理程序被認為是元素的方法。因此,這時候的事件處理程序是在元素的作用域中運行;換句話說,程序中的this引用當前元素。來看一個例子:

var btn=document.getElementById('myBtn');
btn.onclick=function(){
    alert(this.id);  //"myBtn"
}

在事件處理程序內(nèi)部,對象this始終等于currentTarget的值,而target則只包含事件的實際目標。如果直接將事件處理程序指定給了目標元素,則this、currentTarget和target包含相同的值。來看一個例子:

var btn=document.getElementById('myBtn');
btn.onclick=function(event){
    alert(event.currentTarget===this);  //true
    alert(event.target===this);  //true
}
備注
  • currentTarget:
    只讀的Element類型。其事件處理程序當前 正在處理事件的那個元素。
  • target:
    只讀的Element類型。事件的目標。

因此,若事件是冒泡到祖先元素上進行處理的,則this和currentTarget是事件被委托的元素。來看一個例子:

//html
<div id="delegateEle">
    <div id="targetEle">click</div>
</div>

//javascript
var dom=document.getElementById('delegateEle');
dom.addEventListener('click',function(e){
    //以下為單擊targetEle元素時的結(jié)果
    console.log(this.id);  //"delegateEle"
    console.log(e.currentTarget.id);  //"delegateEle"
    console.log(e.target.id);  //"targetEle"
});
注:以上在IE8及以下版本中不適用。
最后編輯于
?著作權(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)容

  • 聲明:本文來源于http://www.webzsky.com/?p=731我只是在這里作為自己的學(xué)習(xí)筆記整理一下(...
    angryyan閱讀 7,248評論 1 6
  • JavaScript 程序采用了異步事件驅(qū)動編程模型。在這種程序設(shè)計風(fēng)格下,當文檔、瀏覽器、元素或與之相關(guān)的對象發(fā)...
    劼哥stone閱讀 1,333評論 3 11
  • 以下文章為轉(zhuǎn)載,對理解JavaScript中的事件處理機制很有幫助,淺顯易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy閱讀 3,173評論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,616評論 19 139
  • 好想談戀愛! 那種全世界只有你的戀愛 那種為你拼1000塊拼圖然后裱起來送你的戀愛 那種他在你上班時發(fā)短信說不用回...
    向陽之新閱讀 468評論 1 1

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