Events 聚合物1.0开孔事件';我们的目标是孩子

Events 聚合物1.0开孔事件';我们的目标是孩子,events,polymer,Events,Polymer,我正在使用on-tap来检测元素点击 <div id="parent" on-tap="myclickEvent"> <h1>Some text<h1> </div> 一些文本 但是当我单击它时,激发事件中的目标属性是h1。 如何更改以使父元素成为目标?尝试e.currentTarget。不要期望它显示在控制台.log中,因为浏览器功能在Chrome中是异步的(实际上甚至不需要记录事件对象或事件中的对象)。但如果您在代码中尝试此操作,

我正在使用on-tap来检测元素点击

<div id="parent" on-tap="myclickEvent">
    <h1>Some text<h1>
</div>

一些文本
但是当我单击它时,激发事件中的目标属性是h1。
如何更改以使父元素成为目标?

尝试
e.currentTarget
。不要期望它显示在控制台.log中,因为浏览器功能在Chrome中是异步的(实际上甚至不需要记录事件对象或事件中的对象)。但如果您在代码中尝试此操作,您可以看到它实际上返回一个
div

myclickEvent: function(e){
  ...
  var tag = e.currentTarget.tagName;
  console.log(tag);
}

以下是您应该注意的非常有用的注意事项:

  • 确保元素具有唯一的id(这非常重要)
  • 如果模板中的元素使用event.currentTarget
  • 如果内容中的元素(shadydom或shadowdom)使用
    Polymer.DOM(event.rootTarget)

我遇到这个问题是因为我对event.target的使用一直正常。有时它得到了直接的父级,有时是父级的父级(这是多次测试完全相同的元素的情况)。不确定原因,但您“currentTarget”每次都返回正确的父级。谢谢模板中的元素不是在阴影dom中吗?当您将元素传递到组件内容区域时,一些聚合物组件将在使用特殊标记呈现模板后在模板中替换该元素,例如,在本例中,您的元素将位于阴影dom中