我在指令中有一个链接函数,我有一个切换功能来编辑当前活动的DOM元素的css内容。如何访问该DOM元素的父类或子类。
指令的一部分:
link: function(scope, element, attrs) {
var title = angular.element(element.children()[0]),
opened = true;
title.bind('click', toggle);
function toggle() {
opened = !opened;
element.removeClass(opened ? 'closed' : 'opened');
element.addClass(opened ? 'opened' : 'closed');
element.siblings().removeclass('opened').addclass('closed'); // What to do here
}
答案 0 :(得分:1)
我会将您的链接功能更改为:
link: function(scope, element, attrs) {
var title = angular.element(element.children()[0]),
opened = true;
title.bind('click', toggle);
function toggle() {
opened = !opened;
element.parent().children().addClass("closed");
element.parent().children().removeClass("opened");
element.toggleClass("opened", opened);
element.toggleClass("closed", !opened); //might be redundantdepending on the rest of your code
}
}
我认为你是按照错误的顺序进行的,如果你先删除/添加你需要的所有类,然后修改元素,你将得到你想要的结果。只需选择父元素,然后获取它的所有父元素。 .children()仅选择父项的直接后代,而类似的.find()方法将遍历层次结构。冗余代码可能不是必需的,具体取决于是否有其他方法可以关闭元素。