Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 搜索具有特定指令AngularJS的子元素?

Javascript 搜索具有特定指令AngularJS的子元素?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在用AngularJS编写一个指令,该指令被限制为一个属性,它试图操纵元素的一些子元素 到目前为止,我正在以这种方式选择要使用的元素: var subMenus = angular.element(element.children()[1]); 这显然是不好的,因为我很容易得到其他意想不到的因素 我还尝试使用特定指令选择元素: var subMenus = angular.element('[imp-drop-sub]'); 这将导致选择我想要的元素以及其他具有指令但不是我想要使用的元素

我正在用AngularJS编写一个指令,该指令被限制为一个属性,它试图操纵元素的一些子元素

到目前为止,我正在以这种方式选择要使用的元素:

var subMenus = angular.element(element.children()[1]);
这显然是不好的,因为我很容易得到其他意想不到的因素

我还尝试使用特定指令选择元素:

var subMenus = angular.element('[imp-drop-sub]');
这将导致选择我想要的元素以及其他具有指令但不是我想要使用的元素的子元素

是否有一些选择器允许我同时执行这两项操作,选择具有特定指令(imp下拉菜单)但仅从子元素中执行的那些操作


使用jQuery是可能的,但操作必须从angular指令完成。

不幸的是,angulars jqlite()不支持带有选择器的children()。而且发现的也非常有限

jQuery可以,因此这将是一个解决方案:
jQuery(element).children(“[imp-drop-sub]”)

另一种方法是,首先调用children()。
然后在集合中迭代/foreach并检查指令是否存在

第二种方法似乎更适合我的情况,请您回答我如何检查元素是否有带有angular的指令?只需对您的小提琴做一点小的更改(至少对我来说):subMenus.push(angular.element(item));因此子菜单的内容是元素。这不是使用angularjs的方式。请阅读这篇精彩的文章:我认为我正在非常密切地关注这个答案,我为DOM操作编写了一个指令(如示例中所示的下拉菜单),使用zhonk的完整答案,我可以只使用集成的jqlite做我需要的事情。关于最后一个警告,不要包含Jquerry,这对我来说太教条了。如果我理解正确,下拉菜单及其子菜单之间存在父子关系。您的父项(下拉菜单)可以控制其子项(子菜单),并且必须了解它们。对于使用jquery或jqlite进行dom操作来说,这是一个非常无效的用例。等等,我正在用一种更好的方式写一个提琴。你可以用这个提琴作为起点来了解如何处理angularjs中的父子关系:要了解更复杂的示例,请看ngForm和ngModel是如何协同工作的: