Javascript 单击父元素时更改子类
在单击父元素时,除了获取函数中的所有子节点并为每个子元素添加一个类之外,angular是否还有更有效的方法来更改或向父元素的子元素添加一个类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> </
<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元素及其子元素