Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
获取AngularJS指令中的第一个子项_Angularjs_Angularjs Directive - Fatal编程技术网

获取AngularJS指令中的第一个子项

获取AngularJS指令中的第一个子项,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我想获取并修改Angular指令中给定元素的第一个子元素 <div class="wanted"> </div> <div class="not-wanted"> </div> <div class="not-wanted"> </div> 但是我的指令修改了所有的孩子。 如何正确执行此操作?您可以使用: elm.children().first(); 或: 两者的效果相同。第二个更具性能。角度包括jqLite。JqLi

我想获取并修改Angular指令中给定元素的第一个子元素

<div class="wanted">
</div>
<div class="not-wanted">
</div>
<div class="not-wanted">
</div>
但是我的指令修改了所有的孩子。 如何正确执行此操作?

您可以使用:

elm.children().first();
或:


两者的效果相同。第二个更具性能。

角度包括jqLite。JqLite不接受-的选择器,因此您将获得所有直接子元素


element.children()
-在指令的帮助下,不以角度方式支持选择器

<div ng-repeat="name in names">
<div check-render>{{name}}</div>
</div>

我使用:
element.children().eq(0)

children()
-获取匹配元素集中每个元素的子元素


eq()
-将匹配的元素集减少到指定索引处的元素集

您是否尝试过css:第一个子元素选择器或使用更多代码更新问题JQLITE不接受子元素选择器()-这就是您获取所有直接子元素的原因。请看这里:I Get TypeError:elm.children(…)。first不是第一个的函数。您可以使用指令源更新您的问题,以及在html中使用它的方式吗?在AngularJS(jqlite)中,children不支持选择器,这是jQuery。AngularJS也不支持first(),这也是jQuery。这毫无意义。您的属性是
custom render
,但您的指令绑定到
checkRender
。另外,必须编写整个控制器/指令才能确定第一个子级是否存在?这似乎不是最好的方法。Angular jqLite也不接受用于查找的类选择器。“仅限于按标记名查找”。
elm.children(':first')
<div ng-repeat="name in names">
<div check-render>{{name}}</div>
</div>
angular.module('myApp').directive('checkRender', function ($timeout) {
    return {
        restrict: 'A',

        link: function (scope, el, attrs) {
if(scope.$first)
alert('first called');
}
}
});