我的<a>
元素具有ng-click
属性。
在某些情况下,我想在此元素上禁用ng-click
。我正在使用jquery来找到这个元素,并且我试图通过各种可能的方式停止点击。例如:return false ;
event.stopPropagation()
等。另外,我删除ng-click
属性
$(element).removeAttr('ng-click');
,但事件仍在解雇。是否可以通过jquery停止(禁用)ng-click
?
答案 0 :(得分:2)
您始终可以在锚元素上添加disabled
属性,以防止ng-click
触发。添加禁用属性时还需要使用CSS。请参阅下面的工作示例
var app = angular.module("sa", []);
app.controller("FooController", function($scope) {
$scope.sayHello = function() {
alert("Hello!!");
};
});
a[disabled] {
pointer-events: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="sa" ng-controller="FooController">
<a href="" disabled ng-click="sayHello()">Say Hello</a>
</div>
您可以使用指令删除ng-click
。但这不适用于jQuery,即如果你使用jQuery添加这个指令,它将无法工作。
var app = angular.module("sa", []);
app.controller("FooController", function($scope) {
$scope.sayHello = function() {
alert("Hello!!");
};
});
app.directive("disableclick", function() {
return {
restrict: 'A',
priority: 1000, // setting higher priority to let this directive execute before ngClick
compile: function(element, attr) {
attr.ngClick = null;
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="sa" ng-controller="FooController">
<a href="" disableclick ng-click="sayHello()">Say Hello</a>
</div>
答案 1 :(得分:1)
如果你想以Angular方式进行,你应该在元素上使用ng-disabled,如:
<a ng-click="someClickHandler()" ng-disabled="isDisabled">Link</a>
除非你知道自己在做什么,否则替换DOM中的元素是一个非常糟糕的主意。如果有任何绑定,则需要首先编译该元素。
如果这不起作用,请尝试用按钮替换元素。
答案 2 :(得分:0)
我太近了......找到解决方案..
var temp = $(result.element).removeAttr('ng-click');
$(result.element).replaceWith(temp);
我只需要用新的元素替换旧元素,但在此之前,必须删除属性然后才能正常工作。