2016-02-11 79 views
0

我正在嘗試使用AngularJS通過標籤名稱來獲取元素。如何在AngularJS中選擇元素

例如,

angular.element(document.querySelector('h1')).css('color', 'green'); 

元件在HTML:

<div> 
    <h1>Title 1</h1> 
</div> 
<div> 
    <h1>Title 2</h1> 
</div> 

它僅適用於第一元件,但不是第二個。我不確定它的原因。任何人都可以幫助我嗎?非常感謝!

+4

原因是'querySelector()'選擇第一個匹配元素。您可以使用'querySelectorAll'來選擇所有匹配的元素,循環它們並應用樣式。不過,我建議在這些元素上使用帶有標誌的'ng-class'。 – Tushar

+1

你爲什麼要這樣做? Angular不是jQuery。只需要使用ng-class –

+0

如果這就像你描述的那樣,也許你應該使用'ng-repeat',就像在'

{{title.text}}

'中一樣。這取決於你想要完成的事情,但要確保你試圖以「角度」的方式來做事。看到這個更多的信息:http://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery-background – adam0101

回答

1

正如@Tushar所說,處理這個問題的最好方法是用ng-class。讓角做DOM操作爲您

你的CSS

.someclass{ 
    color: green 
} 

你的HTML

<div ng-class="{'someclass': obj.value == 'somevalue'}"> 
    <h1>Title 1</h1> 
</div> 
<div> 
    <h1>Title 2</h1> 
</div> 

​​後,在你的控制器,你可以插入任何表情是很有道理的。當您的表達式評估爲真時,​​將應用於您的Div。

1

querySelector()方法返回與文檔中指定的CSS選擇器相匹配的第一個元素。

querySelectorAll()方法返回文檔中與指定的CSS選擇器相匹配的所有元素,作爲靜態的NodeList對象。

+0

這解釋了爲什麼代碼不工作,但不提供解。 – Tushar