在angularJS中查找特定元素标记

时间:2014-11-26 18:21:19

标签: javascript html angularjs dom jqlite

我正在使用angularJS,并希望删除/修改特定子元素的类(其类/ ID未知,因为它被动态添加到父元素)。

据我所知,使用棱角可以说:

    angular.element('someknownParentClass').addClass('newClass');

但是,我想做类似的事情:

    angular.element('.someknownParentClass').find('i').addClass('newClass');

班级&some 39; someknownParentClass'是分配给' a'标签,在这个标签内,我有一个' i'标记有一个glyphicon图标类,我想从特定函数内部更改。似乎这种方法不起作用。我知道有角度的jqLit​​e有一个child()属性,但是我不太清楚如何使用它,或者它在这种情况下是否有用,或者使用带角度的jQuery可能是我的最佳选择(据我所知,这与jqLit​​e不同)。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我假设您在指令中执行此操作,在这种情况下,您可以执行以下操作:

var elem = angular.element('.someknownParentClass');
var iElems = elem.children('i');
iElems.addClass("newClass");

如果你对jQuery感觉更舒服,我就不会在角度指令中看到使用它的问题。根据文档,angular.element是jQuery的别名: https://docs.angularjs.org/api/ng/function/angular.element

$('.someknownParentClass').find('i').addClass("newClass");

答案 1 :(得分:0)

如果您在指令中执行操作,则不需要使用angular.element。如果你想在代码中使用angular.element,你可能最好使用jQuery。我把一个示例jsfiddle放在一起,它将一个指令绑定到一个预定义的类(some-known-parent-class)并搜索它下面的所有“i”元素并向其添加newClass类:

var mod = angular.module("myApp", []);
mod.directive("someKnownParentClass", function () {
    return {
        restrict: "C",
        link: function (scope, element, attrs) {
            element.find("i").addClass("newClass");
        }
    }
});

这样,您通过使用指令进行操作来解耦直接DOM操作(即angular.element)。小提琴here