我正在使用一个基于实体组件的大框架。所以我根本不能改变发送事件的元素的代码,我只能使用接收元素。
this.id不起作用,因为组件(所以事件处理程序)附加到发送事件的元素的父元素。
我正在使用javascript,没有jquery。
我想知道是否有办法在接收元素的事件处理程序中找到:最初发送事件的元素是什么?
我尝试浏览其他解决方案,例如
function doWithThisElement(event) {
event = event || window.event; // IE
var target = event.target || event.srcElement; // IE
var id = target.id;
//...
}
但它对我不起作用。
答案 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);
});