jQuery .find()不适用于通过Angular加载的异步元素

时间:2015-07-02 14:42:43

标签: jquery angularjs asynchronous find

我使用Angular在我的html中使用ng-include包含模板,我使用jQuery .find()来做一些事情,比如:

$('.selector').find('.myClass').each(function(){ // do stuff })

似乎有类' myClass'的元素jQuery .find()中根本看不到模板中包含的内容。

有没有办法实现这个目标?

提前非常感谢你。

2 个答案:

答案 0 :(得分:1)

问题是 - DOM渲染。你需要做那样的事情:

$timeout(function () {
    angular.element('.selector').find('.myClass').each(function(){
       // do stuff
    })
})

如果是外部jQ文件,那么试试这个:

setTimeout(function () {
    $('.selector').find('.myClass').each(function(){
       // do stuff
    })
}, 0)

答案 1 :(得分:-1)

来自https://docs.angularjs.org/api/ng/function/angular.element

  

jqLit​​e是一个微小的API兼容的jQuery子集,它允许Angular以跨浏览器兼容的方式操作DOM。 jqLit​​e仅实现最常用的功能,目标是占用空间非常小。

假设您的代码示例位于Angular控制器或指令中,您不处理“普通”jQuery。为了使用所有jQuery函数,请在angular之前包含jQuery。