Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angularJS中查找特定元素标记_Javascript_Html_Angularjs_Dom_Jqlite - Fatal编程技术网

Javascript 在angularJS中查找特定元素标记

Javascript 在angularJS中查找特定元素标记,javascript,html,angularjs,dom,jqlite,Javascript,Html,Angularjs,Dom,Jqlite,我正在使用angularJS,希望删除/修改特定子元素的类(谁的类/id未知,因为它正在动态添加到父元素) 我理解使用angular可以说: angular.element('someknownParentClass').addClass('newClass'); var elem = angular.element('.someknownParentClass'); var iElems = elem.children('i'); iElems.addClass("newClass"

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

我理解使用angular可以说:

    angular.element('someknownParentClass').addClass('newClass');
var elem = angular.element('.someknownParentClass');
var iElems = elem.children('i');
iElems.addClass("newClass");
但是,我想做一些类似的事情:

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

类“someknownParentClass”是一个分配给“a”标记的类,在这个标记中,我有一个带有glyphicon图标类的“I”标记,我想从特定函数中更改它。这种方法似乎不起作用。我知道angular的jqLite有一个children()属性,但我有点不确定如何使用它,或者它在这种情况下是否有用,或者可能将jQuery与angular一起使用是我的最佳选择(据我所知,这与jqLite不同)。有什么建议吗?

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

    angular.element('someknownParentClass').addClass('newClass');
var elem = angular.element('.someknownParentClass');
var iElems = elem.children('i');
iElems.addClass("newClass");
如果您对jQuery比较熟悉,那么我认为在angular指令中使用它没有问题。根据文档,angular.element是jQuery的别名:


如果在指令内执行操作,则不需要使用angular.element。如果您想在代码中使用angular.element,那么最好使用jQuery。我制作了一个示例JSFIDLE,它将一个指令绑定到一个预定义的类(一些已知的父类),并搜索它下面的所有“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),从而解耦直接DOM操作。Fiddle.

谢谢@JonathanLonowski,我编辑了这篇文章,因为我一开始没有注意到语法上的变化。至于glyphicons,我计划在添加一个新类之前先删除这个类,我只是决定在文章中稍作解释。