从ng-click获取原始元素
从ng-click获取原始元素
我在我的视图中有一个带有ng-click
的项目列表:\n
\n我在指令中的foo
函数中处理点击事件,传递$event
作为被点击对象的引用,但是我得到的是img
标签的引用,而不是li
标签的引用。然后我不得不像这样做来获取li
:\n
$scope.foo = function($event, team) { var el = (function(){ if ($event.target.nodeName === 'IMG') { return angular.element($event.target).parent(); // 获取li } else { return angular.element($event.target); // 是li } })();
\n有没有一种简单的方法来获取与ng-click
绑定的元素的引用,而不需要在我的指令中进行DOM操作?
问题出现的原因:$event对象中的currentTarget属性被设置为null,导致无法获取原始元素。
解决方法:使用$event.currentTarget来代替$event.target来获取原始元素。
当我们在AngularJS中使用ng-click指令时,有时会遇到一个问题:无法从$event对象中获取到原始元素。在这种情况下,我们需要使用$event.currentTarget属性来代替$event.target属性。
一位开发者在遇到这个问题后,通过使用$event.currentTarget属性解决了这个问题,并表示这个解决方法有效。他还提到,$event对象中的currentTarget属性被设置为null,这一点非常奇怪。
另一位开发者在评论中表示,他在打印$event对象时发现,$event.currentTarget的值确实是null。然而,如果打印$event.currentTarget引用,就可以显示正确的元素。
还有一位开发者提到,他通常会使用var elem = $event.currentTarget || $event.srcElement
来获取原始元素,因为这种写法更加跨浏览器友好。然而,他不确定这种写法是否仍然需要。
此外,还有一位开发者指出,通过console.log打印的对象是执行的最后状态,而不是调用console.log时的状态。他提供了一个链接,可以了解更多关于这个问题的信息。
,通过使用$event.currentTarget属性来代替$event.target属性,我们可以解决无法从$event对象中获取原始元素的问题。此外,我们还需要注意console.log打印对象的特性,以避免产生不一致的结果。