javascript - Angular 8 - 如何通过类名获取最接近的父级?

标签 javascript angular selector angular-directive angular8

这就是我想要实现的目标(将此作为示例场景)-

  • 元素 1
    • 元素 2
    • 元素 3
      • 元素 4

元素 4 是我的 Angular 分量。我想根据元素 1 和元素 2 的高度设置其高度。

元素 1 和元素 2 可以位于元素层次结构中的任何位置,即它们不一定必须是直接父级或同级。我希望能够通过类名获取元素 1 和元素 2 的引用并获取它们的高度。

通过类名或任何其他选择器查询 Angular 中的父元素的最佳方法是什么?

最佳答案

请注意,这并不是真正的最佳实践方法。迭代发生 100 次,希望能够根据类名寻找父元素。

/**
 * findParentElementByClass, returns an parent element based on a 
 * class name. This parent class name is chained off the required 
 * child component.
 * 
 * @param  {String} parentClass    // parent class
 * @param  {String} componentClass // Element 4 class in your case
 * @return {Node} componentParent          
 */
function findParentElementByClass(parentClass, componentClass) {
    let componentParent = document.querySelector(`.${componentClass}`).parentNode;

    for (let i = 0; i < 100; i++) {
        if (componentParent.classList.contains(`.${parentClass}`)) {
            break;
        } else {
            componentParent = componentParent.parentNode;
        }
    }

    return componentParent;
}

关于javascript - Angular 8 - 如何通过类名获取最接近的父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57682112/

相关文章:

angular - @ngrx/store pre-load guard catch 错误

ios - 使用 Sprite Kit 创建自定义 slider - 如何传递 @selector?

javascript - API 速率限制是否将 javascript 请求视为来自域的 IP 或用户的 IP?

angular - 错误 : No provider for HttpHandler in angular2

javascript - Laravel 中 AJAX 操作成功后刷新 div

javascript - Angular 2 Facebook 登录

ios - Swift - Timer #selector 不适用于其他 Controller 方法

javascript - 如果提取的 TXT 不包含某个单词,我如何告诉 imacros 转到某个 url?

javascript - AngularJS:一个接一个地监听事件