在Angular指令中获取父元素

时间:2016-07-27 20:55:14

标签: javascript angularjs dom angularjs-directive

当我在tr日历上点击按钮时,我试图找到父datepicker元素。由于我不想在我的Angular应用程序中以脚本标记(编辑)的形式使用jQuery ,并且这不可能使用严​​格的CSS,我在下面创建了指令。 elm.find能够正确找到并更改按钮的CSS,因此我知道我找到了我正在寻找的元素,但是现在我需要向上移动DOM。

我已经习惯了jQuery语法,这种语法不起作用,而且我还没有能够在互联网上找到任何有效的东西。有人可以用语法帮助我吗?

    /* Linker for the directive */
    var linker = function (scope, elm, attrs) {                   
        elm.on('click', function() {
            elm.find('table tbody tr button.active').parent('td').css('background-color', 'red');
        });
    };

修改

这是一个需要放在uib-datepicker元素(Angular UI Bootstrap)上的指令,以便更改整行的背景颜色。该框架没有提供此功能,并且在页面加载之前不会生成HTML。

我需要将指令附加到下面的元素,找到所选项目,然后重新启动DOM以查找父tr

<uib-datepicker highlightselectedrow class="well well-sm" ></uib-datepicker>

2 个答案:

答案 0 :(得分:4)

.parent仅与上限element完全相同。我说要使用.closest,所以它会在父级中进行搜索,直到获得td

elm.find('table tbody tr button.active')
.closest('td').css('background-color', 'red');

答案 1 :(得分:0)

采用比psuedo jQuery更有棱角的方法呢?这基于ngStyle Angular doc

<div ng-style="myStyle">Test</div>
<div ng-click="myStyle={'background-color':'red'}">Click Me</div>

然后,您可以将click事件放在您想要的任何元素上(td)。 ng-style可以移动到您想要的效果(tr)。