我想添加一個活動的類到使用AngularJS的jQuery Lite庫的元素,我遇到了麻煩。jQuery Lite/AngularJS:如何將一個類添加到元素的單個子元素?
我希望我可以做這樣的事情但是element.children()[index].addClass('active');
,返回以下錯誤:
TypeError: element.children(...)[index].addClass is not a function
有沒有一種方法來添加一個類元素的一個孩子?
(function() {
'use strict';
angular
.module('rugapp')
.directive('menu', menu);
menu.$inject = ['$location'];
function menu($location) {
return {
restrict: 'A',
link: link
};
function link(scope, element) {
scope.$on('$routeChangeSuccess', function() {
angular.forEach(element.children(), function(link, index) {
if (link.hash.replace('#', '') === $location.path()) {
console.log("Make " + $location.path() + " active!!!");
console.log(element.children()[index]);
// element.children()[index].addClass('class');
}
});
});
}
}
})();
爲了完整性,該指令被應用,像這樣:
<div class="list-group" menu>
<a href="app/#/" class="list-group-item">Home</a>
<a href="app/#/link1" class="list-group-item">Link1</a>
<a href="app/#/link2" class="list-group-item">Link2</a>
....
</div>
UPDATE:工作指令使用AngularJS指令添加一個 '有效' 類。
(function() {
'use strict';
angular
.module('rugapp')
.directive('menu', menu);
menu.$inject = ['$location'];
function menu($location) {
return {
restrict: 'A',
link: link
};
function link(scope, element) {
scope.$on('$routeChangeSuccess', function() {
angular.forEach(element.children(), function(link, index) {
if (link.hash.replace('#', '') === $location.path()) {
element.children().eq(index).addClass('active');
} else {
element.children().eq(index).removeClass('active');
}
});
});
}
}
})();
優秀,非常感謝! –
這是一個非常易變的解決方案 - 如果我想爲了造型目的而添加' | (例如) - 這會立即破解這個解決方案。 @RaphaelRafatpanah –
@NewDev,有趣。有沒有辦法限制上述語句只包含'a'元素? –