禁用内部链接上的外部元素的ng-click

时间:2015-05-06 19:08:03

标签: javascript angularjs angular-ui-router angularjs-ng-click

我有一个使用ui-router的网站,我有一张桌子,我在单元格上点击了一下,但在单元格内部有一个链接。单击链接时,我需要从单元格中禁用ng-click。

<div ng-click="click()" style="background: #d3d3d3">
  <a ui-sref="about">go to about page</a>
</div>

当我点击此链接时,我希望它转到about页面,但不要调用click功能。这是一个plnkr:http://plnkr.co/edit/kE9CZYcYu1OPA9S0K3Jk?p=preview

这与我的实际网站略有不同,但这具有相同的行为(div而不是表格)。我已经尝试添加ng-click="$event.preventDefault()",但这也没有解决它。

感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:6)

阻止事件在<a>标签上传播到div

<a ui-sref="about" ng-click="$event.stopPropagation()">go to about page</a>

另一种方法是检查点击处理程序中的点击目标

<div ng-click="click($event)">

JS

$scope.click = function(e){
   if( e.target.tagName ==='A'){
       return; // skip click event handler
   }
    // rest of click code
}

答案 1 :(得分:1)

您应该尝试$event.stopProgation()

<div ng-click="click();" style="background: #d3d3d3">
  <a ui-sref="about" ng-click="$event.stopProgation()">go to about page</a>
</div>

不会将事件传播给父母。