非常清楚的是event.target
处理发起事件的 DOM 元素。
And - event.delegateTarget
提供我们实际附加监听器的 DOM 元素,
但我很难理解我什么时候会使用 -事件.currentTarget :
查看显示此示例的 jQuery 示例:JSBIN1
看起来就像是完全一样event.delegateTarget
$( "body" ).click(function( event ) {
$( "#log" ).html( "clicked: " + event.currentTarget.nodeName );
});
![enter image description here](https://i.stack.imgur.com/HfW6m.png)
我点击的每个地方 - 它都说:点击了“BODY” - 这与 delegateTarget 的行为完全相同
Question
我会在哪些(现实生活)场景中使用event.currentTarget
? (示例将不胜感激)
注意 - 找不到任何 currentTarget 与 delegateTarget 问题......
event.target
and event.currentTarget
是属性Event界面W3C 规范定义:
-
event.target:
事件对象的此属性是指派事件的对象
在。它不同于event.currentTarget
当事件处理程序是
在事件的冒泡或捕获阶段调用。
-
event.currentTarget:
当事件遍历时标识事件的当前目标
DOM。它始终引用事件处理程序所在的元素
附着于而不是附着于event.target
它标识了上的元素
事件发生的地方。
此外,jQuery 还添加了event.delegateTarget:
当前调用的 jQuery 事件处理程序所附加的元素
与的区别event.currentTarget
解释于
此属性在附加的委托事件中最有用.delegate()
or .on()
,其中事件处理程序附加在
正在处理的元素的祖先。例如,可以使用它,
识别并删除委托点的事件处理程序。
对于直接附加到元素的非委托事件处理程序,event.delegateTarget
将永远等于event.currentTarget
.
例如,如果单击以下 HTML 中的按钮:
<div class="box">
<button>Button</button>
</div>
$( "body" ).on( "click", ".box", function(e) {
e.delegateTarget; // body
e.currentTarget; // .box
e.target; // button
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)