Javascript。有没有办法在事件处理程序内部检查哪个元素发送了事件?

Javascript. Is there a way to check inside an event handler which element sent the event?

我正在使用一个基于实体组件的大型框架。所以我根本无法更改发送事件的元素的代码,我只能与接收元素一起工作。

this.id 不起作用,因为组件(因此事件处理程序)附加到发送事件的元素的父元素。

我正在与 javascript 合作,没有 jquery。

我想知道是否有办法在接收元素的事件处理程序中找到:哪个元素最初发送了事件?

我尝试浏览其他解决方案,例如

function doWithThisElement(event) {
event = event || window.event; // IE
var target = event.target || event.srcElement; // IE

var id = target.id;
//...

}

但这对我不起作用。

使用event.target 属性 可以知道哪个元素触发了事件。它包含对调度事件的对象的引用。

另请注意,在事件的捕获和冒泡阶段,此 (event.target) 可能不同于注册事件的元素。

document.addEventListener('click', function(e){
    var eventTarget = e.target;
    console.log(eventTarget);
    });

您必须使用 event.target 属性 才能 returns 触发和启动事件的 DOM 元素。

$('div').click(function(event){
    console.log(event.target.id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>