2017-11-14 3 views
1

クリック可能な要素のインデックスはどのようにして見つけることができますか?ボタンをクリックしたときにインデックスliを取得する必要があるので、配列から削除することができます。委任でクリック可能な要素のインデックスを見つける方法は?

var template = document.querySelector('#template'); 
    this.element.addEventListener('click', function(e) { 
     if(e.target && e.target.nodeName == 'BUTTON' && e.target.className == 'remove') { 
      //var index = ?? 
      //this.deleteTask(index); 
     } 
    }.bind(this)); 


    <script id="template" type="x-tmpl-mustache"> 
     <ul> 
      {{ #tasks }} 
       <li>{{ . }} - <button class="remove">X</button></li> 
      {{ /tasks }} 
     </ul> 
    </script> 

答えて

1

あなたが@indexを使用する場合は、データの属性を持つボタン自体に添付し、その使用することができます。

var template = document.querySelector('#template'); 
this.element.addEventListener('click', function(e) { 
    if(e.target && e.target.nodeName == 'BUTTON' && e.target.className == 'remove') { 
     var index = e.target.dataset.index; 
     // or possibly e.target.getAttribute('data-index'); 
     this.deleteTask(parseInt(index, 10)); 
    } 
}.bind(this)); 


<script id="template" type="x-tmpl-mustache"> 
    <ul> 
     {{ #tasks }} 
      <li>{{ . }} - <button class="remove" data-index="{{ @index }}">X</button></li> 
     {{ /tasks }} 
    </ul> 
</script> 
+0

万一ボックスのうち、この@Indexの仕事? devToolsの要素を調べるときにボタンに空のデータインデックスがあることがわかります。ボタンをクリックすると、e.target.datasetには何も表示されません。 –

+0

あなたは 'handlebars'を使用していますか?または「口ひげ」それ自体? – rossipedia

+0

私は口ひげ自体がインデックスにアクセスする方法はないと思います。ハンドルバーを使うときは '@index'を使うべきですが、口髭ではあなたのアイテムやそれに類するものの' key'プロパティのようなものを使う必要があります。 – rossipedia

関連する問題