2

У меня есть сайт с использованием ui-router, где у меня есть таблица, и у меня есть ng-click на ячейках, но есть ссылка внутри ячейки. Мне нужно отключить ng-click из ячейки, когда нажимается ссылка.Отключить ng-click от внешнего элемента по ссылке внутри

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

Когда я нажимаю эту ссылку, я хочу, чтобы она переходила на страницу about, но не вызывала функцию щелчка. Вот plnkr: http://plnkr.co/edit/kE9CZYcYu1OPA9S0K3Jk?p=preview

Это немного отличается от моего фактического сайта, но это имеет такое же поведение (div вместо таблицы). Я попытался добавить ng-click="$event.preventDefault()", но это тоже не решило.

Любая помощь приветствуется. Благодаря!

+0

' ng-click = "$ event.stopPropagation()" на якоре, возможно, так, чтобы он не пузырился, чтобы запустить th e 'click()' для своего родителя. – PSL

+0

@PSL, который сработал. Ты восхитителен! Если вы поместите это как ответ, я приму это. – Timothy

+1

Timothy - @: charlietfl обновил свой ответ, так как вы можете принять его. – PSL

ответ

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 
} 
+0

Это работает отлично! Спасибо! :) – Timothy

+0

просто предложите альтернативу, чтобы вы знали, как в будущем – charlietfl

1

Вы должны попробовать $event.stopProgation()

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

, которые не будут распространяться события туда родителей.

+0

Я тоже думаю, что stopPropagation - это путь, но не должен ли он находиться на якоре, чтобы он не пузырился, чтобы запустить click() в его родительском? – PSL

+0

Пропаганда означает пузыриться по дереву .. не вниз, событие начнется на '' ... пузырь до того, как div увидит его – charlietfl

+0

@PSL charlietfl thats my bad..I исправил его. :) –

Смежные вопросы