2017-06-01 46 views
0

我有一些JavaScript,我試圖轉換成角:使用ng-click切換父類元素的類?

$('.col-lg .fa-clock-o').click(function(e){ 
    $(this).parent().toggleClass('set-time'); 
    e.preventDefault() 
}); 

我嘗試添加以下內容包含鏈接的子元素,但它不工作,也許那裏有一個正確的「有角度「的方式來做到這一點呢?

<a href="#" class="fa fa-clock-o" aria-hidden="true" ng-click="$(this).parent().toggleClass('set-time')"></a> 
+1

可能的複製[jQuery內部ng-click來傳遞html元素參考](https://stackoverflow.com/問題/ 24592158/jquery-inside-ng-click-to-pass-html-element-reference) – Pyromonk

+0

您使用的是angularjs還是angular 2/4?因爲在角度上沒有ng-click,你可以使用(click)=「foo()」 – Akkusativobjekt

回答

2

更「角」的方式來做到這一點是設置其表示set-time類是否存在父元素上的變量。默認情況下,這將是undefined這是虛假的。

然後,在您的ng-click中切換它,您可以將該值設置爲與當前的值相反。

<div ng-class="{'set-time': setTimeClass}"> 
    <a href class="fa fa-clock-o" aria-hidden="true" ng-click="setTimeClass = !setTimeClass">toggle class</a> 
</div> 

這裏有一個工作示例:

var app = angular.module('app', []);
.set-time { 
 
background :red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="app"> 
 
    <div ng-class="{'set-time': setTimeClass}"> 
 
     <a href class="fa fa-clock-o" aria-hidden="true" ng-click="setTimeClass = !setTimeClass">toggle class</a> 
 
    </div> 
 
    
 
</div>

+0

謝謝,這個工程很好。如果我在ng-repeat中有多個div,是否可以擴展你的方法來切換父元素的類,並且將所有* other *父div元素的類設置爲false? – Rory

0

下工作,但不知道它的角方式:

HTML:

<a href="#" class="fa fa-clock-o" aria-hidden="true" ng-click="$ctrl.toggleTimepickerPopup($event)"></a> 

控制器:

public toggleTimepickerPopup(event : any) : void{ 
    jquery(event.target).parent().toggleClass('set-time'); 
    event.preventDefault() 
} 
0

家長的是不是一個功能,它的原型:

正確的用法是: $(this).parent

而且你的錨元素:

<a href="#" class="fa fa-clock-o" aria-hidden="true" ng-click="$(this).parent.toggleClass('set-time')"></a>