Try   HackMD

在監聽事件中的 this/ event

隱藏在 Handler 中的 "event"

https://ithelp.ithome.com.tw/articles/10192015

當監聽的事件發生時,瀏覽器會去執行我們透過 addEventListener() 註冊的 Event Handler (EventListener) ,也就是我們所指定的 function。

這個時候,EventListener 會去建立一個「事件物件」 (Event Object),裡面包含了所有與這個事件有關的屬性,並且以「參數」的形式傳給我們的 Event Handler

var btn = document.getElementById('btn'); // e (Event Object) btn.addEventListener('click', function(e){ console.log(e); });

在事件中找回「自己」this

在 Event Handler 的 function 裡頭,若是想要對「觸發事件的元素」做某些事時,可以用 this

this 代表的會是「觸發事件的目標

console.log('target', e.target) // 觸發事件的元素 console.log('currentTarget', e.currentTarget; // 觸發事件的目標 console.log('this', this) // 觸發事件的目標

換言之,e.target 其實是「觸發事件的元素」,而 this 指的是「觸發事件的目標」元素,也就是 event.currentTarget

當然,如果在不考慮事件傳遞的情況下,this 實質上就等同於 e.target

tags: JS

最後,親愛的大家!我需要你的大聲鼓勵 ٩(⚙ᴗ⚙)۶

如果覺得這篇文章對你有幫助,請給我個一個小小的鼓勵 ❤ 讓我知道,這會成為我寫下去很大的動力。
對了,我還有其他文章,如果有興趣也來逛逛吧!
(文章中如有覺得不妥之處、錯誤內容,也可以透過聯絡我,我會儘速改善,感謝!)

☞ YoJanni 珍妮 2021 正在設計轉職前端的路上,希望大家在學習的路上能夠一起成長
☞ 聯絡我