JQuery find()在angular指令中找不到元素

时间:2017-01-12 05:49:07

标签: jquery angularjs

我有一个角度指令,我需要找到所有带有'.selected'类的孩子,但它不起作用。

element.parent().children():工作正常

element.parent().find('div'):工作正常

element.parent().find('.selected'):一无所获。

如何选择<div class="child selected" test></div>元素?

指令:

app.directive('test', function() {
    return function(scope, element, attrs) {
        angular.element(element).bind('mouseenter', function() {
            $('.parent').css('background-color', 'red');
            element.parent().find('.selected').removeClass('selected');
            element.addClass('selected');
        });
    }
});

HTML:

<div class="parent">
    <div class="child selected" test></div>
    <div class="child" test></div>
    <div class="child" test></div>
</div>

1 个答案:

答案 0 :(得分:2)

如果您依赖于jqLite lite版本的jquery ,那么您必须浏览angular.elements的文档,这些文档可以告诉您它有某些限制当你使用.find()时,这就是它的限制:

它只能找到带有标签名称的元素。

来自.find()的文档:

  

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

     

find() - 仅限于按标签名称

进行查找