[英]Proper way to traverse the angular.element
我正在使用一条指令,在该指令的链接函数中获得了DOM元素,并且在其中有一个要访问的元素。
即
// element = <directive>
// ...
// <div id="target"></div>
// ...
// </directive>
如果我想获取该元素(例如执行一个.click()
事件),则需要使用“ document
”对象,因为我还没有找到一种直接直接访问此#target
元素的方法。
您知道执行此操作的正确方法吗? 不幸的是,jqLite仅给我们提供了一个find()
函数,在该函数中无法按id
而不是class
搜索
就个人而言,当我使用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,您将不再像jQuery那样获得带有结果的对象数组,而是得到一个nodeList,因此无法将forEach方法应用于例如,但是有简单的解决方法。 每当新的参考jqLite无法完成工作时,您始终可以直接使用angular.element。
但这应满足大多数jQuery需求的99%:)
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.