使用角度js访问DOM元素兄弟

时间:2013-01-03 10:19:14

标签: jquery jquery-ui angularjs

我在指令中有一个链接函数,我有一个切换功能来编辑当前活动的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  

        }

1 个答案:

答案 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()方法将遍历层次结构。冗余代码可能不是必需的,具体取决于是否有其他方法可以关闭元素。