簡體   English   中英

防止使用ng-click的click元素觸發錨標簽

[英]Prevent clicking element with ng-click from triggering anchor tag

我有一個<span> ,在<a>標記內帶有ng-click處理程序。

<a href="/foo/bar">
  <h1>Some title</h1>
  <span ng-click="doSomething()">Say Hi!</span>
</a>

單擊此跨度時,如何防止<a>標記導航到其位置?

編輯:我找到了答案-使用e.preventDefault(); 不是e.stopPropagation();

嘗試使用event.stopPropagation()防止事件冒泡DOM樹

<span ng-click="doSomething($event)">Say Hi!</span>

調節器

$scope.doSomething = function (event){
    event.stopPropagation();
    // other code
}
<a href="/foo/bar">
  <h1>Some title</h1>
  <span prevent-click="doSomething()">Say Hi!</span>
</a>

Directive.js

.directive('preventClick', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            element.bind('click', function (e) {
                e.preventDefault();
                scope.$apply(attrs.preventClick);
            }
        }
    }

答案是使用$event.preventDefault() 與使用stopPropagation()來阻止事件冒泡DOM樹並觸發其他處理程序相比,這對於停止HTML元素的默認行為而言尤其如此。

在這種情況下,我們將停止特定元素的默認行為,因此preventDefault()是解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM