2015-09-30 138 views
0

我试图找出确定事件目标属于哪个父节点的最佳方法。确定一个事件目标是否是另一个元素的子元素

你有一个定制的聚合物元素与2个或更多的形式。每个表单有一个提交按钮:

<form is="iron-form" id="form1" method="post" action="/action1"> 
    <paper-button on-tap="_submitHandler">Send<paper-button> 
</form> 
<form is="iron-form" id="form2" method="post" action="/action2"> 
    <paper-button on-tap="_submitHandler">Send<paper-button> 
</form> 
... 
<form is="iron-form" id="formN" method="post" action="/action3"> 
    <paper-button on-tap="_submitHandler">Send<paper-button> 
</form> 

然后在标签中你有处理程序:

_submitHandler: function(e) { 
    var path = Polymer.dom(e).path; 
    var item = null; 
    var form = null; 
    for (var i = 0; i < path.length; i++) { 
     item = path[i]; 
     switch (item) { 
      case this.$.form1: 
       form = this.$.form1; 
       break; 
      case this.$.form2: 
       form = this.$.form2; 
       break; 
      // ... N cases 
     } 
    } 
    if (form != null) { 
     form.submit() 
    } 
} 

必须有一个更好的方式来做到这一点...什么是处理的正确方法这样的情况?

我使用的聚合物1.0

回答

0

试试这个:

_submitHandler: function(e) { 
    var form = var form = Polymer.dom(e).parentNode; 

    if (form != null) { 
     form.submit() 
    } 
} 

或者这样:

_submitHandler: function(e) { 
    var form = var form = Polymer.dom(e.target).parentNode; 

    if (form != null) { 
     form.submit() 
    } 
} 
+0

刚试过了。 “form”是未定义的。顺便说一句我使用聚合物1.0 –

+0

请看我编辑答案。 – alexandergs

+0

请参阅我上面的自己的答案。刚刚测试过,它的工作。谢谢! –

0

的方式做到这一点如下:

_submitHandler: function(e) { 
    Polymer.dom(e).localTarget.parentNode.submit(); 
} 
相关问题