2016-04-27 40 views
2

我得到了4-5行div ...當我點擊任何行時,它應該改變所選擇的一個,並將它變成紅色,然後全部變爲黑色......我是使用下面的邏輯,但不爲我工作給出的錯誤angular.min.js:117 TypeError:angular.element(...)。兄弟姐妹不是一個函數我如何選擇AngularJS中的同胞元素

我需要包括jQuery文件嗎? 我可以做到這一點,而不包括jQuery文件?

plz幫助

$scope.divClick = function($event){ 
 
\t \t console.log($event.target); 
 
    
 
     /* below siblings function not working for me*/ 
 
\t \t angular.element(event.target).siblings().css('color','black'); 
 
    
 
    
 
\t \t angular.element(event.target).css('color','red'); 
 
\t };
<div ng-controller="homeController"> 
 
<h1>Welcome</h1> 
 

 
<div ng-repeat="x in json" ng-click="divClick($event)"> 
 
Name: {{x.Name}}<br/> City: {{x.City}}<br/> Country: {{x.Country}}<br/><br/> 
 
</div> 
 

 

 
</div>

回答

2

設置默認顏色爲黑色。

<div ng-repeat="x in json" ng-class="{setRed: $index == value}" ng-click="divClick($index)"> 

給你的class setRed提供CSS樣式。

您的控制器功能:

$scope.divClick = function(index){ 
    $scope.value = index; 
}; 
+0

感謝您的幫助...它爲我工作....你可以plz解釋我這個邏輯 – Jay

+1

登錄是非常簡單的。 ngRepeat指令爲集合中的每個項目實例化一次模板。每個模板實例都有自己的作用域,其中給定的循環變量設置爲當前的集合項目,並且$ index被設置爲項目索引或鍵。因此,在每次點擊(ng-click)時,您都將$ scope.value設置爲等於剛剛單擊的項目的索引。現在ng-class迭代每個$ index,檢查它是否等於更新$ scope.value。如果結果相同,則SetRed類將應用於該分區。 –

+0

$索引和索引之間的區別是什麼....我試着用$索引和索引...都爲我工作....我見過$事件和事件相同的場景 – Jay

0

一般來說它的壞主意,直接從你的控制器修改DOM。 最好使用範圍或模型屬性,並根據它們決定應用哪個類。

<div ng-repeat="x in json" ng-click="select($index)" ng-class="{'selected': $index == selectedIndex}"> 
Name: {{x.Name}}<br/> 
City: {{x.City}} 

然後你只對你有更新的selectedIndex單擊處理

$scope.select = function(x) { 
    $scope.selectedIndex = x; 
}; 

完全可行的解決方案是在這裏

https://jsfiddle.net/kvtcw8y6/4/

另一種方式是有isSelected財產在你模型和更新它accordin甘氨酸。

相關問題