2014-02-12 51 views
1

我使用了一個指令,我在它的鏈接函數中獲得了DOM元素,並且在那裏我有一個我想要訪問的元素。正確的方式遍歷angular.element

// element = <directive> 
//    ... 
//    <div id="target"></div> 
//    ... 
//   </directive> 

如果我想要得到的元素,例如做一個.click()事件,我需要使用「document」對象,因爲我還沒有找到很長的路要走直接到這個#target元素一次。

任何想法正確的方法來做到這一點? 不幸的是jqLit​​e只給我們一個find()功能,你不能用id搜索不到class

+1

是否嘗試angular.element(elem.querySelector('。classname')) –

+0

這更好,我使用哈哈謝謝! – farolfo

回答

0

個人而言,當我使用angularjs,我在自動使用querySelectorAll爲目標的DOM,像這樣一個新的參考包裹的一切:

YOUR_APP.run(function() { 
    jqLite = function(selector) { 
     var selectorResult = (typeof selector == 'object') ? selector : document.querySelectorAll(selector) 
     return angular.element(selectorResult) 
    }; 
}) 

所以我可以用它「像jQuery」,使用:jqLite('body > div').addClass('whatever');

有,這些都不會表現得像jQuery的極少數情況下,例如,通過使用querySelectorAll,你不再得到一個ARR結果的對象,像jQuery會做的,但是一個nodeList,所以你不能應用forEach方法,但有一些簡單的解決方法。 並且每當新的參考jqLit​​e無法完成這項工作時,您總是可以直接使用angular.element。

但這應該滿足最需要的jQuery 99%:)

希望這有助於。