。家长(),而不jquery的 - 或querySelectorAll父母[重复](.parents

2019-07-01 09:56发布

可能重复:
检查event.target.parentElement与和matchesSelector JS

我有一个DOM对象,我想,以配合其父母,所有的家长,对一个选择,像querySelectAll()但对于父母,而不是孩子。 到jQuery的。家长类似的(“选择”)的方法,但我不需要任何回病房的兼容性。 此外,没有图书馆讨好。 我将手提包拿一个布尔返回值。

我可以在这个自己/写为递归函数/在使用matchesSelector() 我在寻找鲜为人知的方法或更高效的代码。

保存任何处理是值得的。 想想几十匹配检查十万,或更均匀。

Answer 1:

只是因为我是个好人! 在未来始终确保你有一些代码在你的问题,否则将很可能被关闭/ downvoted:/

但是你想使用while()循环,因为我们不知道父母的确切数量,我们有

的jsfiddle演示

function getParents(el, parentSelector /* optional */) {

    // If no parentSelector defined will bubble up all the way to *document*
    if (parentSelector === undefined) {
        parentSelector = document;
    }

    var parents = [];
    var p = el.parentNode;

    while (p !== parentSelector) {
        var o = p;
        parents.push(o);
        p = o.parentNode;
    }
    parents.push(parentSelector); // Push that parentSelector you wanted to stop at

    return parents;
}

用途:返回“家长”的数组

// 2nd param optional, bubbles up to document
getParents( document.getElementById('me') ); 

// get all parents starting from -me- up to ID -outerParent-
getParents( document.getElementById('me'), document.getElementById('outerParent') );


文章来源: .parents() without jquery - or querySelectorAll for parents [duplicate]