如何使用jqLit​​e按类名选择元素?

Lio*_*ior 109 angularjs angularjs-directive jqlite

我正试图从我的Angular.js应用程序中删除jquery以使其更轻,并改为使用Angular的jqLit​​e.但该应用程序大量使用find('#id')和find('.classname'),jqLit​​e不支持,只有'标签名称'(根据文档)

想知道你认为改变它的最佳方法是什么.我想到的一种方法是创建自定义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>
Run Code Online (Sandbox Code Playgroud)

$element.find('#add-to-bag') 
Run Code Online (Sandbox Code Playgroud)

$element.find('a2b')
Run Code Online (Sandbox Code Playgroud)

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

谢谢

利奥尔

pse*_*ma4 202

基本上,正如@ 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'))
Run Code Online (Sandbox Code Playgroud)

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

  • 如果elem是一个jqlite对象,它将是`angular.element(elem [0] .querySelector('.classname'));` (42认同)
  • 谢谢!从Ricardo Bin回答(angular的邮件列表),$ document注入也可以使用:http://jsfiddle.net/ricardohbin/fTQcs/ (3认同)