私は次のようなHTML構造を持っています:
<div ng-click="test()">
<div id="myId" ng-click="test2()"></div>
<div></div>
...
</div>
div
現在、IDを指定してをクリックすると、myId
両方の関数がトリガーされますが、関数だけがトリガーされるようにしたいと思いtest2
ます。どうやってやるの?
私は次のようなHTML構造を持っています:
<div ng-click="test()">
<div id="myId" ng-click="test2()"></div>
<div></div>
...
</div>
div
現在、IDを指定してをクリックすると、myId
両方の関数がトリガーされますが、関数だけがトリガーされるようにしたいと思いtest2
ます。どうやってやるの?
イベントの伝播/バブリングを停止するだけです。
このコードは次のことに役立ちます。
<div ng-click="test()">ZZZZZ
<div id="myId" ng-click="test2();$event.stopPropagation()">XXXXX</div>
<div>YYYYYY</div>
...
</div>
関数test
とtest2
関数が次のようになっている場合、 DIVtest2
をクリックしたときにコンソールにのみ表示されます。myId
そうしない$event.stopPropagation()
と、コンソール出力ウィンドウで
次のように表示test2
されます。test
$scope.test = function() {
console.info('test');
}
$scope.test2 = function() {
console.info('test2');
}
トムの答えと同じですが、少し違います。
<div ng-click="test()">
<div id="myId" ng-click="test2($event)">child</div>
</div>
$scope.test2 =function($event){
$event.stopPropagation();
console.log("from test2")
}
$scope.test =function(){
console.log("from test")
}