event.currentTarget 的实际用途?

2023-12-02

非常清楚的是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

我点击的每个地方 - 它都说:点击了“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(使用前将#替换为@)

event.currentTarget 的实际用途? 的相关文章