Javascript 在angularJS中查找特定元素标记
我正在使用angularJS,希望删除/修改特定子元素的类(谁的类/id未知,因为它正在动态添加到父元素) 我理解使用angular可以说: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"
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,我计划在添加一个新类之前先删除这个类,我只是决定在文章中稍作解释。