我有一种情况,我想确定一些被点击的东西;基本上这是布局。
<div ng-controller="DropDownController">
<div class="dropdown-menu" ng-click="check($event)">
<div class="container">
<div>
// lots of other content and layers
<a href="#">This is somewhere in there</a>
</div>
</div>
</div>
然后在控制器上,它非常简单。
基本上,如果用户点击超链接,它将按预期工作。但如果他们点击图层上的任何其他内容,则只会完全忽略点击。我很难弄清楚如何确定链接是否被点击了。
app.controller("DropDownController", function($scope){
$scope.check = function($event){
// if the clicked target is an <a>, then proceed
$event.preventDefault(); // should never reach this, if a link is clicked.
$event.stopPropagation(); // should never reach this, if a link is clicked.
});
我已经能够使用$event.target.localName !== 'a'
检测元素了,但这感觉有点hacky。我不确定localName
是什么,或者它有多可靠。这是一个很好的万无一失的方法,以确保它只对锚点作出反应?或者至少,我划分为可点击的东西?
答案 0 :(得分:2)
您可以跟踪$ event.target.tagName属性以查明是否已单击锚标记,这是标准的。因此,您可以确定这在所有情况下都有效。
if ($event.target.tagName === 'A') {
alert('Link clicked');
}
else{
//Do something else
}
我为你创建了一个JSFiddle。应该明确这个概念: