2015-09-30 133 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(); 
} 
相關問題