gpt4 book ai didi

javascript - 在 javascript 中找到两个 DOM 节点的第一个公共(public)父节点的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-30 07:18:57 24 4
gpt4 key购买 nike

我的问题正是这样,但在上下文中我想检查选择对象,比较 anchorNode 和 focusNode,如果它们不同,则找到第一个公共(public)父元素。

var selected = window.getSelection();
var anchor = selection.anchorNode;
var focus = selection.focusNode;

if ( anchor != focus ) {
// find common parent...
}

最佳答案

假设没有 JS 库,我会尝试这样的事情:

function findFirstCommonAncestor(nodeA, nodeB, ancestorsB) {
var ancestorsB = ancestorsB || getAncestors(nodeB);
if(ancestorsB.length == 0) return null;
else if(ancestorsB.indexOf(nodeA) > -1) return nodeA;
else if(nodeA == document) return null;
else return findFirstCommonAncestor(nodeA.parentNode, nodeB, ancestorsB);
}

使用这个工具:

function getAncestors(node) {
if(node != document) return [node].concat(getAncestors(node.parentNode));
else return [node];
}

if(Array.prototype.indexOf === undefined) {
Array.prototype.indexOf = function(element) {
for(var i=0, l=this.length; i<l; i++) {
if(this[i] == element) return i;
}
return -1;
};
}

然后你可以调用findFirstCommonAncestor(myElementA, myElementB)

关于javascript - 在 javascript 中找到两个 DOM 节点的第一个公共(public)父节点的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com