63

私は次のようなHTML構造を持っています:

<div ng-click="test()">
    <div id="myId" ng-click="test2()"></div>
    <div></div>
    ...
</div>

div現在、IDを指定してをクリックすると、myId両方の関数がトリガーされますが、関数だけがトリガーされるようにしたいと思いtest2ます。どうやってやるの?

4

3 に答える 3

121

イベントの伝播/バブリングを停止するだけです。

このコードは次のことに役立ちます。

<div ng-click="test()">ZZZZZ
    <div id="myId" ng-click="test2();$event.stopPropagation()">XXXXX</div>
    <div>YYYYYY</div>
    ...
</div>

関数testtest2関数が次のようになっている場合、 DIVtest2をクリックしたときにコンソールにのみ表示されます。myIdそうしない$event.stopPropagation()と、コンソール出力ウィンドウで 次のように表示test2されます。test

$scope.test = function() {
    console.info('test');
}
$scope.test2 = function() {
    console.info('test2');
}
于 2013-03-13T16:17:06.447 に答える
32

トムの答えと同じですが、少し違います。

        <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")
        }
于 2013-03-13T17:51:26.223 に答える