我有这个简单的脚本,它使用 jQuery 捕获按钮事件:
$(function() {
$('#myButton').click(function(evt) {
console.log(evt);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="myButton" type="button">
Enviar
</button>
当变量evt
显示在控制台中时,它有几个属性称为:
target
currentTarget
delegateTarget
relatedTarget
除了relatedTarget
引用同一个对象,即引发事件的按钮之外,所有这些对象。有谁知道它们之间的区别是什么?如果它们都指向同一个对象,为什么 jQuery 使用它们?
target
:指已分配事件的对象元素。考虑如下结构:和以下代码:
当事件被点击时
clic
,span
它会被激活,因为它是由于气泡效应(更多信息在:Bubbling and JQuery Events - Java Architecture),此时点击的当前目标(currentTarget
)是span
,但目标为这样的 (target
) 是div
。行为方式相同,
relatedTarget
但可用于委托其事件的对象,如下所示:jQuery 代码将是:
他
delegateTarget
就是他div.box
。值得一提的是,对于非委托元素:delegateTarget
将始终等于currentTarget
.好吧,根据 MDN(Mozilla 开发者网络)它说如下:
event.target
: 触发事件的 DOM 元素。event.currentTarget
:始终指代已附加到event.target
特定的事件处理程序元素,这标识了事件发生的元素。event.relatedTarget
:标识事件的次要目标,您可以在使用鼠标事件时看到这一点。event.delegateTarget
:包含正在执行的元素,当我们使用它.on()
来了解谁调用了事件时。方法