如何使用ng-click获取DOM元素

5
我有一些元素,例如:
<button ng-click="weirdFunction()">Pretty Button</button>

控制器中的And函数:

$scope.weirdFunction = function(element) {
 console.log(element);
}

在控制台日志中,我想要接收这个DOM元素。我尝试了几种方法:

  1. <button ng-click="weirdFunction()" ng-model="button">漂亮的按钮</button>

    $scope.weirdFunction = function() { console.log($scope.button); }

  2. <button ng-click="weirdFunction(button)" ng-model="button">漂亮的按钮</button> $scope.weirdFunction = function(elem) { console.log(elem); }

  3. <button ng-click="weirdFunction($element)">漂亮的按钮</button> $scope.weirdFunction = function(elem) { console.log(elem); } 但所有尝试都失败了。我错在哪里?如何获取被点击的元素?


如果想要访问元素,请使用指令;或者将 $event 传递到函数中。 - Anmol Mittal
你可以使用 ng-click="weirdFunction($event.target)",首先为什么需要 DOM? - Pankaj Parkar
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - YoroDiallo
你不能考虑使用ng-class或ng-style来实现相同的效果吗? - Pankaj Parkar
@Pankaj Parkar,是的,ng-class很酷,但我至少有7个带有模态窗口的按钮,当我按下按钮时,它应该知道需要显示的不是所有模态窗口,而是ElementSibling。 - YoroDiallo
3个回答

7
请尝试以下代码片段。

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.weirdFunction = function(element) {
     console.log(element);
    }  
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<button ng-click="weirdFunction($event.currentTarget)">Pretty Button</button>
 </div>


3
将$event对象传递给weirdFunction函数。$event.target返回触发点击事件的元素。
<button ng-click="weirdFunction($event)">Pretty Button</button>

我很高兴它能帮到你 :) - Varun Singh

1
我现在有这个问题,最后创建了这个函数。
getElement($event){
    return $event.target || $event.srcElement || $event.toElement || $event.path[0];
};

在CanIUse上,它可以在任何地方工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接