event.currentTarget的真实生活用法?

很明显, event.target处理发起事件的DOM元素。
并且 – event.delegateTarget提供我们实际附加侦听器的DOM元素,

但是我很难理解我什么时候会使用 – event.currentTarget

查看显示此示例的jQuery示例: JSBIN1

它似乎与event.delegateTarget

 $( "body" ).click(function( event ) { $( "#log" ).html( "clicked: " + event.currentTarget.nodeName ); }); 

在此处输入图像描述

我点击的任何地方 – 它说:点击“BODY” – 这与delegateTarget的行为完全相同

在哪些(现实生活)场景中我会使用event.currentTarget(例子将非常感谢)

nb – 找不到任何currentTarget vs delegateTarget问题….

event.targetevent.currentTarget是W3C规范定义的Event接口的属性:

  • event.target

    事件对象的此属性是调度事件的对象。 在事件的冒泡或捕获阶段调用事件处理程序时,它与event.currentTarget不同。

  • event.currentTarget

    当事件遍历DOM时,标识事件的当前目标。 它始终引用事件处理程序附加到的元素,而不是event.target ,它标识事件发生的元素。

另外,jQuery添加了event.delegateTarget

附加当前调用的jQuery事件处理程序的元素

event.currentTarget的区别在于解释

此属性通常在.delegate().on()附加的委托事件中有用,其中事件处理程序附加在正在处理的元素的祖先上。 例如,它可用于在委派点识别和删除事件处理程序。

对于直接附加到元素的非委托事件处理程序, event.delegateTarget将始终等于event.currentTarget

例如,如果单击以下HTML中的按钮:

 
 $( "body" ).on( "click", ".box", function(e) { e.delegateTarget; // body e.currentTarget; // .box e.target; // button }); 

如果您有HTML标记,如下所示

    

并且你有绑定处理程序来锚定

 $("a").click(function(){ // Some stuff }); 

现在,在click处理程序中, event.target指向图像但您实际上已经单击了锚点,在单击处理程序中,您需要访问anchor的data-id属性以执行某些操作。 在这里获取当前目标,您可以使用event.currentTarget来访问锚点。

event.currentTarget属性是当前响应DOM事件的元素,DOM事件是绑定事件处理程序的元素。 至于现实世界的用法? 不太确定。