angularjs - 获取被点击的元素

时间:2014-08-01 11:55:02

标签: angularjs

我有一种情况,我想确定一些被点击的东西;基本上这是布局。

<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是什么,或者它有多可靠。这是一个很好的万无一失的方法,以确保它只对锚点作出反应?或者至少,我划分为可点击的东西?

1 个答案:

答案 0 :(得分:2)

您可以跟踪$ event.target.tagName属性以查明是否已单击锚标记,这是标准的。因此,您可以确定这在所有情况下都有效。

if ($event.target.tagName === 'A') {
   alert('Link clicked');
}
else{
 //Do something else
}

我为你创建了一个JSFiddle。应该明确这个概念:

http://jsfiddle.net/8KJ4Y/1/