Javascript 单击父元素时更改子类

Javascript 单击父元素时更改子类,javascript,angularjs,Javascript,Angularjs,在单击父元素时,除了获取函数中的所有子节点并为每个子元素添加一个类之外,angular是否还有更有效的方法来更改或向父元素的子元素添加一个类 <div class="menu-icon-container" ng-click="changeState()"> <div ng-repeat="bar in [bar1, bar2, bar3] track by $index" class="bar{{$index + 1}} "></div> </

在单击父元素时,除了获取函数中的所有子节点并为每个子元素添加一个类之外,angular是否还有更有效的方法来更改或向父元素的子元素添加一个类

<div class="menu-icon-container" ng-click="changeState()">
    <div ng-repeat="bar in [bar1, bar2, bar3] track by $index" class="bar{{$index + 1}} "></div>
</div>


所需的结果是,当单击
菜单图标容器时,其中的div将根据条件切换类。

您可以使用
ng style
指令进行此操作。只需在$scope上设置一个属性,然后单击
div.menu-icon-container

<div class="menu-icon-container" ng-click="conditionForClassName = !conditionForClassName">
  <div ng-repeat="bar in [bar1, bar2, bar3] track by $index" 
    ng-class="{ 'className': conditionForClassName }"></div>
</div>


您可以使用
ng style
指令进行此操作。只需在$scope上设置一个属性,然后单击
div.menu-icon-container

<div class="menu-icon-container" ng-click="conditionForClassName = !conditionForClassName">
  <div ng-repeat="bar in [bar1, bar2, bar3] track by $index" 
    ng-class="{ 'className': conditionForClassName }"></div>
</div>


您可以使用指令

指令

 myApp.directive('addClassChild', function($timeout) {
   var linkFn = function(scope, element, attrs) {
      element.bind("click", function() {
        for (var i = 0; i < element[0].children.length+1; i++) {
           element.children().eq(i).addClass('active');
        }
      });
   };
return {
   link: linkFn,
   restrict: 'A',
};
})
<div class="menu-icon-container" add-class-child>
    <div ng-repeat="bar in [bar1, bar2, bar3] " class="bar{{$index + 1}} ">
      {{$index}}
    </div>
</div>
myApp.directive('addClassChild',函数($timeout){
var linkFn=函数(范围、元素、属性){
元素绑定(“单击”,函数(){
对于(var i=0;i<元素[0]。children.length+1;i++){
element.children().eq(i).addClass('active');
}
});
};
返回{
链接:linkFn,
限制:“A”,
};
})
HTML

 myApp.directive('addClassChild', function($timeout) {
   var linkFn = function(scope, element, attrs) {
      element.bind("click", function() {
        for (var i = 0; i < element[0].children.length+1; i++) {
           element.children().eq(i).addClass('active');
        }
      });
   };
return {
   link: linkFn,
   restrict: 'A',
};
})
<div class="menu-icon-container" add-class-child>
    <div ng-repeat="bar in [bar1, bar2, bar3] " class="bar{{$index + 1}} ">
      {{$index}}
    </div>
</div>

{{$index}}
在高层,指令是DOM元素(如属性、元素名称、注释或CSS类)上的标记,它们告诉AngularJS的HTML编译器($compile)将指定行为附加到该DOM元素(例如通过事件侦听器),甚至转换DOM元素及其子元素


您可以使用指令

指令

 myApp.directive('addClassChild', function($timeout) {
   var linkFn = function(scope, element, attrs) {
      element.bind("click", function() {
        for (var i = 0; i < element[0].children.length+1; i++) {
           element.children().eq(i).addClass('active');
        }
      });
   };
return {
   link: linkFn,
   restrict: 'A',
};
})
<div class="menu-icon-container" add-class-child>
    <div ng-repeat="bar in [bar1, bar2, bar3] " class="bar{{$index + 1}} ">
      {{$index}}
    </div>
</div>
myApp.directive('addClassChild',函数($timeout){
var linkFn=函数(范围、元素、属性){
元素绑定(“单击”,函数(){
对于(var i=0;i<元素[0]。children.length+1;i++){
element.children().eq(i).addClass('active');
}
});
};
返回{
链接:linkFn,
限制:“A”,
};
})
HTML

 myApp.directive('addClassChild', function($timeout) {
   var linkFn = function(scope, element, attrs) {
      element.bind("click", function() {
        for (var i = 0; i < element[0].children.length+1; i++) {
           element.children().eq(i).addClass('active');
        }
      });
   };
return {
   link: linkFn,
   restrict: 'A',
};
})
<div class="menu-icon-container" add-class-child>
    <div ng-repeat="bar in [bar1, bar2, bar3] " class="bar{{$index + 1}} ">
      {{$index}}
    </div>
</div>

{{$index}}
在高层,指令是DOM元素(如属性、元素名称、注释或CSS类)上的标记,它们告诉AngularJS的HTML编译器($compile)将指定行为附加到该DOM元素(例如通过事件侦听器),甚至转换DOM元素及其子元素