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

时间:2017-01-21 16:49:25

标签: javascript events aframe

我正在使用一个基于实体组件的大框架。所以我根本不能改变发送事件的元素的代码,我只能使用接收元素。

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

我正在使用javascript,没有jquery。

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

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

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

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

}

但它对我不起作用。

2 个答案:

答案 0 :(得分:1)

您必须使用event.target属性才能返回触发并启动事件的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>

答案 1 :(得分:0)

使用event.target属性了解触发事件的Element。它包含对调度事件的对象的引用。

另请注意,此事件(event.target)可能与事件被捕获的元素不同,以及事件的捕获和泡沫阶段。

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