角度 - 是其他的元素孩子

时间:2013-03-07 23:45:55

标签: javascript jquery angularjs

我正在尝试找到一种纯粹的Angular方法来确定点击的元素是否是另一个元素的子元素。在jQuery中我会做()但不确定在Angular中以哪种方式执行此操作,除了遍历所有子项并进行比较。

jQuery的:

if($(someelement).has(another)) { };

2 个答案:

答案 0 :(得分:0)

你可以走另一条路。

您可以询问A是否是B的祖先,而不是询问B是否是A的孩子:

function isAncestor(ancestor, element) {
    var parent = element.parentNode;
    while (parent && parent!=ancestor) {
        parent = parent.parentNode;
    }
    return parent==ancestor;
}

答案 1 :(得分:0)

我要把它放在这里,因为我试图解决同样的问题并认为它可能对其他人有用,即使它不是{{{ 1}}。

我的第一个解决方案是使用has()

如果你正在处理矩形目标,你可以针对Element.getBoundingClientRect()的边界矩形(这是一个angular.element)检查click事件的x和y

element

IE8 +工作正常,但在5-7

中有一个小错误

http://www.quirksmode.org/dom/w3c_cssom.html

令人讨厌的是,如果你的元素包含其他元素,这些元素不会影响它不会起作用的宽度/高度。但你可以使用这个(略微hacky)解决方案

$document.bind('click', function(evt) {
    var x = evt.x,
        y = evt.y,
        rect = element[0].getBoundingClientRect();

    if(x > rect.left && x < rect.right && y > rect.top && y < rect.bottom) {
        //you've clicked somewhere in the element
    }
});