AngularJS:如何使用jqLit​​e查找?

我试图从我的Angular.js应用程序中删除jquery,以使其更轻,并把Angular的jqLit​​e代替。 但是该应用程序大量使用find('#id')和find('.classname'),这些不被jqLit​​e支持,只有'标签名'(按照文档)

想知道你觉得什么是最好的方法来改变它。 我想到的一种方法是创build自定义的HTML标签。 例如:改变
<span class="btn btn-large" id="add-to-bag">Add to bag</span>

 <a2b style="display:none;"><span class="btn btn-large" >Add to bag</span></a2b> 

 $element.find('#add-to-bag') 

 $element.find('a2b') 

有什么想法吗? 其他的想法?

谢谢

利奥尔

本质上和@ kevin-b所指出的那样:

 // find('#id') angular.element(document.querySelector('#id')) //find('.classname'), assumes you already have the starting elem to search from angular.element(elem.querySelector('.classname')) 

注意:如果您想从控制器执行此操作,您可能需要查看开发人员指南中的“正确使用控制器”部分,并将您的表示逻辑重构为适当的指令(如<a2b …>) 。

如果elem.find()不适合你,检查你是否包括angular脚本之前的 JQuery脚本….

我在我的app使用jQuery ,这是为我工作。

 function link(scope, el) { // ... $(el[0]) .find('.classname') .doSomethingJQuery_ish(); // ... } 

笔记:

  • 这个内置的.find()不能像AngularJS文档中提到的那样用class-names/ids来查找元素: https ://docs.angularjs.org/api/ng/function/angular.element

find() – 仅限于通过标签名称查找

  • 上面提到的方法很好,如果你已经在你的app加载jQuery 。 如果没有,你将不得不加载它才能工作。

祝你好运。

angualr使用jQuery的轻量版本称为jqlite,这意味着它不具备jQuery的所有function。 这里是在angularjs文档中有关你可以在jQuery中使用什么的参考。 Angular元素文档

在你的情况下,你需要find一个ID或类名称的股利。 您可以使用类名称

 var elems =$element.find('div') //returns all the div's in the $elements angular.forEach(elems,function(v,k)){ if(angular.element(v).hasClass('class-name')){ console.log(angular.element(v)); }} 

它不像jQuery那么灵活,但是什么