【发布时间】:2015-04-23 04:13:15
【问题描述】:
In this plunk 我有两个 div。第一个 div(橙色)包含第二个 div(蓝色)。目标是在您单击 div 时显示警报。
如果您单击橙色 div(指令 dir1),您将看到警报。但是如果你点击蓝色的 div(指令 dir2),你会看到 两个 警报,因为阻止默认 e.preventDefault() 不会停止事件链。如何使这项工作?
HTML:
<div dir1 style="width:200px;height:200px;background-color:orange">
<div dir2 style="width:100px;height:100px;background-color:blue"> </div>
</div>
Javascript:
app.directive('dir1', function() {
var directive = {};
directive.restrict = 'EA';
directive.link = function(scope, element, attrs) {
element.bind('click', function() {
alert('clicked on dir1');
});
}
return directive;
});
app.directive('dir2', function() {
var directive = {};
directive.restrict = 'EA';
directive.link = function(scope, element, attrs) {
element.bind('click', function(e) {
e.preventDefault();
alert('clicked on dir2');
});
}
return directive;
});
【问题讨论】:
-
你想要
stopPropagation(),而不是preventDefault()。preventDefault用于阻止链接离开页面、表单提交等操作
标签: angularjs