0

我正在使用 angularJS 并想删除/修改特定子元素的类(谁的类/id 是未知的,因为它被动态添加到父元素中)。

我知道使用 angular 你可以这样说:

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

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

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

类“someknownParentClass”是分配给“a”标签的类,在这个标签内,我有一个带有字形图标类的“i”标签,我想从特定函数内部进行更改。这个方法好像行不通。我知道 angular 的 jqLit​​e 有一个 children() 属性,但我有点不确定如何使用它,或者在这种情况下它是否有用,或者使用 jQuery 和 angular 可能是我最好的选择(据我所知,这与 jqLit​​e 不同)。有什么建议么?

4

2 回答 2

0

I'm assuming you're doing this in a directive, in which case you can do something like:

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

If you're more comfortable in jQuery, I don't see a problem in using it in an angular directive instead. According to the docs, angular.element is an alias for jQuery: https://docs.angularjs.org/api/ng/function/angular.element

$('.someknownParentClass').find('i').addClass("newClass");
于 2014-11-26T18:30:37.043 回答
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)。在这里拉小提琴。

于 2014-11-26T18:39:11.290 回答