【发布时间】:2013-12-31 16:07:26
【问题描述】:
我在 AngularJS/Firefox 中发现了一个奇怪的怪癖,其中选择器使用抓取不同的元素。我已经把它放在一个 Plunker 中来展示它的效果:
http://plnkr.co/edit/H7stCpQE59i0aUlQ865j?p=preview
在 Chrome 中打开它并单击按钮。你实际上是在选择一个隐藏的 <input> 元素,然后 Angular 传递它的事件/父元素,获取父元素 <button> 并向其添加类 .active,如下所示:
$scope.selectTag = function($event){
var elem = angular.element($event.srcElement).parent();
if(elem.hasClass('active')){
elem.removeClass( "active" );
}else{
elem.addClass('active');
}
}
不过,在 Firefox 中,它选择 <input> 元素并将 .active 添加到该元素,而不是作为其父元素的 <button>。
关于为什么会发生这种情况的任何想法?
【问题讨论】:
-
或许你应该使用
target而不是srcElement就像var elem = angular.element($event.target).parent();一样 -
参见stackoverflow.com/questions/5301643/… 了解$event.srcElement 的描述
标签: javascript jquery google-chrome angularjs firefox