Javascript 聚合物事件靶

Javascript 聚合物事件靶,javascript,events,polymer,Javascript,Events,Polymer,如果我将tap事件侦听器添加到本地dom中包含某些元素的聚合组件实例中,则事件的目标(和源)可以是本地dom的元素 在本地dom中始终获取对宿主元素而不是其任何子元素的引用的最佳方法是什么 示例:具有本地dom的组件 <dom-module id="x-foo"> <template> <p>Foo</p> <img id="image" src$="[[src]]" width$="[[width]]" height$

如果我将tap事件侦听器添加到本地dom中包含某些元素的聚合组件实例中,则事件的目标(和源)可以是本地dom的元素

在本地dom中始终获取对宿主元素而不是其任何子元素的引用的最佳方法是什么

示例:具有本地dom的组件

<dom-module id="x-foo">
  <template> 
    <p>Foo</p>
    <img id="image" src$="[[src]]" width$="[[width]]" height$="[[height]]">
  </template>
  <script src="x-foo.js"></script>
</dom-module>

使用组件并添加侦听器

<x-foo on-tap="_onTap">
...
_onTap: function(e) {
   // here i need a reference to the element
   // that listens to the tap (host / x-foo)
   // but if i tap on the img, the target is a
   // reference to the img element
}

...
_onTap:功能(e){
//这里我需要一个元素的引用
//侦听tap的(主机/x-foo)
//但如果我点击img,目标是
//对img元素的引用
}
多谢各位

问候, 梅森曼

您可以尝试使用

e.currentTarget
而不是

e.target
如上所述

您可以在描述中看到,它“在事件遍历DOM时标识事件的当前目标。它总是指事件处理程序已附加到的元素,而不是标识事件发生的元素的event.target”

e.currentTarget
而不是

e.target
如上所述


您可以在描述中看到,它“在事件遍历DOM时标识事件的当前目标。它总是指事件处理程序已附加到的元素,而不是标识事件发生的元素的event.target

正如Mishu在其关于e.currentTarget的评论中所建议的,但是还有另一个需要注意的重要点是,如果您想知道事件从多少个地方经过,请选中
composedPath()
此方法跟踪事件经过的所有地方

正如Mishu在其关于e.currentTarget的评论中所建议的那样,还有一点需要注意,如果您想知道事件从多少个地方经过,请选中
composedPath()
此方法跟踪事件经过的所有地方