我正在使用angularJS,并希望删除/修改特定子元素的类(其类/ ID未知,因为它被动态添加到父元素)。
据我所知,使用棱角可以说:
angular.element('someknownParentClass').addClass('newClass');
但是,我想做类似的事情:
angular.element('.someknownParentClass').find('i').addClass('newClass');
班级&some 39; someknownParentClass'是分配给' a'标签,在这个标签内,我有一个' i'标记有一个glyphicon图标类,我想从特定函数内部更改。似乎这种方法不起作用。我知道有角度的jqLite有一个child()属性,但是我不太清楚如何使用它,或者它在这种情况下是否有用,或者使用带角度的jQuery可能是我的最佳选择(据我所知,这与jqLite不同)。有什么建议吗?
答案 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。