ng-clickから元の要素を取得する


204

ビューにアイテムがng-click添付されたリストがあります。

<ul id="team-filters">
    <li ng-click="foo($event, team)" ng-repeat="team in teams">
         <img src="{{team.logoSmall}}" alt="{{team.name}}" title="{{team.name}}">
    </li>
</ul>

fooディレクティブの関数でクリックイベントを処理し、クリックさ$eventれたオブジェクトへの参照として渡しますが、imgタグではなくタグへの参照を取得していますli。私は、取得するには、このようなものをしなければなりませんli

$scope.foo = function($event, team) {
   var el = (function(){
       if ($event.target.nodeName === 'IMG') {
          return angular.element($event.target).parent(); // get li
       } else {
          return angular.element($event.target);          // is li
       }
   })();

ng-clickディレクティブでDOM操作を行わずに、バインドされている要素への参照を取得する簡単な方法はありますか?

回答:


317

$event.currentTarget代わりに必要です$event.target


3
おかげで、それは働いています。$ eventオブジェクトのcurrentTargetプロパティがnullに設定されているのは奇妙です。
Ozrix 14

2
これは間違いなく奇妙です... $ eventオブジェクトをログに記録すると、$ event.currentTargetはnullに見えます。ただし、$ event.currentTarget参照をログに記録すると、正しい要素が表示されます。
リチャーダデイ2014

6
通常は使用しますvar elem = $event.currentTarget || $event.srcElement。それは常によりクロスブラウジフレンドリーでしたが、それが必要かどうかはわかりません。
WebWanderer 2015年

12
console.logは、console.logが呼び出されたときの状態ではなく、実行の最後の状態で深い可変オブジェクトを示します。stackoverflow.com/questions/22059811/…を
Tivie

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.