Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用从外部元素单击内部链接_Javascript_Angularjs_Angular Ui Router_Angularjs Ng Click - Fatal编程技术网

Javascript 禁用从外部元素单击内部链接

Javascript 禁用从外部元素单击内部链接,javascript,angularjs,angular-ui-router,angularjs-ng-click,Javascript,Angularjs,Angular Ui Router,Angularjs Ng Click,我有一个使用ui路由器的站点,在那里我有一个表,我在单元格上有一个ng单击,但在单元格内有一个链接。当点击链接时,我需要禁用单元格中的ng click <div ng-click="click()" style="background: #d3d3d3"> <a ui-sref="about">go to about page</a> </div> 这与我的实际站点有点不同,但它具有相同的行为(div而不是table)。我尝试添加ng c

我有一个使用ui路由器的站点,在那里我有一个表,我在单元格上有一个ng单击,但在单元格内有一个链接。当点击链接时,我需要禁用单元格中的ng click

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

这与我的实际站点有点不同,但它具有相同的行为(div而不是table)。我尝试添加
ng click=“$event.preventDefault()”
,但也没有解决问题


感谢您的帮助。谢谢

您应该尝试
$event.stopProgation()


转到“关于”页

不会将事件传播到这些父级。

防止
标记上的事件传播到div

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

ng click=“$event.stopPropagation()”
,这样它就不会冒泡在其父对象上运行
click()
。@PSL成功了。你真棒!如果您将此作为答案,我将接受。Timothy-@:charlietfl已经更新了他的答案,您可以接受。@Timothy:与其在链接上添加不必要的ng click事件,不如尝试使用$event.currentTarget并执行事件处理程序代码。这不需要您添加ng click-on锚定标记。因为在表列中有锚定标记,所以最终会有很多锚定标记的事件处理程序。因此,我认为在表单元格上只使用所需的事件处理程序会更好。我也认为StopRopagation是一个不错的选择,但它不应该在锚点上,这样它就不会在其父节点上运行click()?传播意味着在树上冒泡..而不是向下,事件将在
上开始。在div看到它之前,气泡将出现。但它仍将在div上发生,但不会在树的更高位置发生。必须提出一个替代方案,以便您知道将来如何进行
<a ui-sref="about" ng-click="$event.stopPropagation()">go to about page</a>
<div ng-click="click($event)">
$scope.click = function(e){
   if( e.target.tagName ==='A'){
       return; // skip click event handler
   }
    // rest of click code
}