我试图从我的Angular.js应用程序中删除jquery,以使其更轻巧,而改用Angular的jqLite。但是该应用程序大量使用了jqLite不支持的find('#id')和find('。classname'),仅使用了“标签名称”(根据文档)
想知道您认为改变它的最佳方法是什么。我考虑过的一种方法是创建自定义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')
有什么想法吗?其他想法?
谢谢
骗子
如果定义
—
Mark Rajcok
a2b
元素,则必须已定义指令。您可以在指令的链接函数中执行所需的操作,从而避免完全调用find()吗?与您的类类似-您是否可以定义指令并将所需的功能放入指令的链接(或编译)函数中?
据说@KevinB Angular的jqLite支持“仅标记名”
—
Lior
@MarkRajcok我没有定义指令。它似乎可以在IE和chrome中使用。但是即使我定义了一条指令,为什么会有帮助呢?我仍然需要掌握DOM元素。
—
Lior
为什么find('span.btn')或类似内容对您不起作用?
—
法比
DomElement.querySelector(".myclassname")
css选择器选择单个后代元素,或通过将All添加到所有元素来选择所有元素:DomElement.querySelectorAll(".myclassname")
在IE <9中,这当然不起作用。