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.target
和event.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事件是绑定事件处理程序的元素。 至于现实世界的用法? 不太确定。